java - 如何从对象层次结构生成 xml?

标签 java xml xml-serialization

我有对象、树/模型/层次结构,无论正确的术语是什么。它由可描述为所需 XML 的一对一映射的内容组成。

我有以下内容(在非标准的 UML 语法中)

class A {
    class B b[*]
    class C
    class D
}

class B {
    class C c[*]
    string AttributeFoo = "bar"
}

class C {
    string AttributeThis = "is"
}

class D {
    string AttributeName = "d"
}

期望的输出是这样的:

<?xml version="1.0"?>
<a>
    <b attribute-foo="bar">
        <c attribute-this="is"/>
    </b>
    <c attribute-this="is"/>
    <d attribute-name="d"/>
</a>

您认为实现此目标的最佳和/或最简单方法是什么?

最佳答案

我会关注 JAXB,因为a) 您可以在标准库中获得它,b) 它并没有那么复杂。此代码需要 Java 6:

@XmlRootElement public static class A {
  public List<B> b = new ArrayList<B>();
}

public static class B {
  public List<C> c = new ArrayList<C>();
  @XmlAttribute(name = "attribute-foo") public String attributeFoo = "foo";
}

public static class C {
  @XmlAttribute(name = "attribute-this") public String attributeThis = "is";
}

public static void main(String[] args) {
  A a = new A();
  a.b.add(new B());
  a.b.get(0).c.add(new C());
  JAXB.marshal(a, System.out);
}
//TODO: getters/setters, error handling and so on

输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a>
    <b attribute-foo="foo">
        <c attribute-this="is"/>
    </b>
</a>

关于java - 如何从对象层次结构生成 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1803666/

相关文章:

c# - 如何将属性添加到标有 XmlArrayAttribute 的集合中?

java - XML 序列化和空构造函数

java - 自定义链表与官方链表

html - 我如何增加这个 SVG 的大小?

c# - 使用 LINQPad 查询包含嵌套元素的 XML 文件?

java - 如何用JAXB读写XML元素 "as is"?

c# - C# Xml 序列化问题

java - 如何在 Stagemonitor 中使用指标

java - 如何启用 Hibernate HiLo 实体标识符优化器策略

用于多个计划作业的 Java 框架