加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 05:04:07 所属栏目:Java 来源:网络整理
导读:我有对象,树/模型/层次结构,无论正确的术语是什么.它由可以表征为所需 XML的一对一映射的内容组成. 这就是我有以下内容(使用非标准的UML语法) class A { class B b[*] class C class D}class B { class C c[*] string AttributeFoo = "bar"}class C { string
我有对象,树/模型/层次结构,无论正确的术语是什么.它由可以表征为所需 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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读