假设我有一个递归数据结构
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生成这样的递归结构吗?怎么样?
答案 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(可能是StAX类XMLStreamWriter)。
答案 3 :(得分:0)
虽然我很欣赏StringBuilder的方法,但我宁愿推荐使用java api for xml newbies。使用StringBuilder要快得多,但也容易出错。即使你知道自己在做什么,也应该考虑使用javas builtin xml支持,这样你就不会陷入编码陷阱。