java - 从下到上创建类实例的 XML 表示?

标签 java xml dom creation

我正在考虑以 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/

相关文章:

java - 在 Play Framework 中的其他静态页面上包含一个静态页面

java - 创建单词出现计数 vector 的快速方法

java - GWT 应用程序中带有登录/注销逻辑的 header

android - 如何调整 ImageButton 的宽度和高度?

xml - 在定义的范围内强制 XML 属性的唯一性

PHP nodeValue 剥离 html 标签 - innerHTML 替代方案?

java - 构造不可变对象(immutable对象)的抽象生成器

Python - 解析 Json 和 XML 哪个更快?

javascript - onchange 事件不会在 MSIE 中冒泡。我在哪里可以找到列出所有此类事件的图表

javascript - 在页面上移动大量 HTML 对象并使用 jQuery 重新绑定(bind)事件