我正在考虑以 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;
}
但是这样我就不需要返回 ans 因为它已经附加在它应该在的地方,所以它变成了
public void append(Document doc, Element parent) {
Element ans = doc.createElement("myclasstag");
parent.appendChild(ans);
// filling ans
}
现在绝对不喜欢toString()
。
是否可以像 toString()
那样从下到上创建 XML 实例?
最佳答案
使用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>
当然,它是完全可定制的。
关于java - 从下到上创建类实例的 XML 表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10951169/