1

我正在考虑以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()的。

是否可以像这样从下到上创建 XML 实例toString()

4

1 回答 1

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>

当然,它是完全可定制的。

于 2012-06-08T14:59:57.847 回答