使用jsp将递归结构转换为xml

时间:2009-12-01 09:45:58

标签: java xml jsp recursion

假设我有一个递归数据结构

 class Tree {
      private Tree right;
      private Tree left;
      private int data;
      ....
 }

我想用jsp将它转换为xml,所以我的ui树小部件可以用Ajax加载xml页面并构造一个树(具有可扩展/可折叠节点等)。

xml看起来像这样:

<tree>
   <tree>
      <data value="5"/>
   </tree
   <tree>
      <data value="1"/>
      <tree>
          <data value="5"/>
      </tree
      <tree>
          <data value="1"/>
      </tree>
   </tree>
</tree>

可以用jsp生成这样的递归结构吗?怎么样?

4 个答案:

答案 0 :(得分:3)

试试这个:

class Tree {
     Tree right;
     Tree left;
     int data;

     public String toXmlString(){
        StringBuilder s = new StringBuilder();
        s.append("<tree>");
        s.append("<data value=\"" + data + "\" />");
        if(right != null)
            s.append(right.toXmlString());
        if(left != null)
            s.append(left.toXmlString());
        s.append("</tree>");

        return s.toString();
     }
 }

一些用法:

Tree t = new Tree();
//fill values to tree
....

String xml = t.toXmlString();

答案 1 :(得分:1)

我讨厌回答并接受我自己的问题,但在审核完其他问题之后,答案应该是:

“无法合理地使用JSP”。

答案 2 :(得分:0)

从技术上讲,我相信可以做到 - 可能是自定义标签。但是JSP不适合递归算法。

使用servlet和您选择的XML API(可能是StAXXMLStreamWriter)。

答案 3 :(得分:0)

虽然我很欣赏StringBuilder的方法,但我宁愿推荐使用java api for xml newbies。使用StringBuilder要快得多,但也容易出错。即使你知道自己在做什么,也应该考虑使用javas builtin xml支持,这样你就不会陷入编码陷阱。