【问题标题】:JAXB Does not Marshall as ExpectedJAXB 未按预期编组
【发布时间】:2011-08-02 16:17:49
【问题描述】:

我的一个朋友让我发布这个问题:

编辑:他决定在这里自己发布问题:JAXB Unmarshalls XML Incorrectly 我试图删除这个问题,但不能。

我正在尝试编组一个名为 MyContainer 的 java 类。这个类扩展了我的另一个类,叫做ContainerContainer 有一个变量叫做:protected List<ResourceReference<Component>> child

MyContainer 的唯一变量是它从 Container 继承的变量。但是,当我将孩子列为 XmlList 时,此 List 不会与 JAXB 编组。

它将编组为XmlElement,但这不是我希望数据显示的方式。当它被编组为XmlElement 时,它会列出List 中的属性,但不是“分层”它只是列出两个元素,就好像它们是类的属性一样,而不是属于子列表。

如何让 Jaxb 正确编组 List(实例化为 ArrayList)?

编辑:这是一个例子: 这就是我得到的:

<MyContainer name="Container Name">
    <booleanVal>false</booleanVal>
    <child id="Test Comp 1"/>
    <child id="Test Comp 2"/>
</and>

这是我所期望的更多:

<MyContainer name="Container Name">
    <booleanVal>false</booleanVal>
    <child> /// This would be the class variable of the extended Class, Container
        <ResourceRef id="Entry 1">
        <ResourceRef id="Entry 2">
    </child>
</and>

诚然,我当前的结果可能来自标有 @XmlElement 注释的 Container 中的列表。但是,JAXB 不会编组其他任何东西..

【问题讨论】:

  • 很难理解你的问题。你能给出你得到的 XML 样本和你想要的另一个 XML 样本吗?

标签: java xml jaxb marshalling


【解决方案1】:

使用@XmlElementWrapper 注释您的列表。见javadoc

【讨论】:

  • @XmlElementWrapper 确实正确显示了数据,但是当 JAXB 转到 Demarshall 那个 XML 文件时,它没有正确地将元素插入到列表中。我缺少什么让它将包装器中列出的每一件事都标识为列表中的一个元素?
  • 我的朋友决定发布他的问题。在这里看到它:stackoverflow.com/questions/6916790/…。接受这个以结束问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多