我正在考虑以toString()
方式编写方法,以便它返回类实例的XML表示。
首先我想把它写成
public Element toElement() {
// create Element instance and fill it
}
但是我无法在里面创建空的Element
实例,因为Element
创建需要Document
个实例来调用它createElement()
。
所以我把方法重写为
public Element toElement(Document doc) {
Element ans = doc.createElement("myclasstag");
// filling ans
return ans;
}
但后来我得到了运行时异常HIERARCHY_REQUEST_ERR
,因为在将Element
实例附加到父层次结构之前,它无法填充public Element toElement(Document doc, Element parent) {
Element ans = doc.createElement("myclasstag");
parent.appendChild(ans);
// filling ans
return ans;
}
实例。
所以我要重写方法如下
public void append(Document doc, Element parent) {
Element ans = doc.createElement("myclasstag");
parent.appendChild(ans);
// filling ans
}
但是这种方式我不需要返回ans,因为它已经附加到应该的位置,所以它变成了
toString()
现在绝对不喜欢toString()
。
是否可以像{{1}}一样从低到高的方式创建XML实例?
答案 0 :(得分:1)
使用XStream,我可以这样做:
package com.adarshr;
import com.thoughtworks.xstream.XStream;
class Parent {
private String name;
private int age;
public Parent(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Test {
private Parent parent = new Parent("Abcd", 30);
public static void main(String[] args) throws Exception {
System.out.println(new Test());
}
@Override
public String toString() {
return new XStream().toXML(this);
}
}
打印哪些:
<com.adarshr.Test>
<parent>
<name>Abcd</name>
<age>30</age>
</parent>
</com.adarshr.Test>
当然,它完全可以自定义。