我的一个 friend 让我发布这个问题:
编辑:他决定在这里自己发布问题:JAXB Unmarshalls XML Incorrectly我试图删除这个问题,但不能。
我正在尝试编码一个名为 MyContainer
的 Java 类.这个类扩展了我的另一个类,称为 Container
. Container
有一个名为:protected List<ResourceReference<Component>> child
的变量
唯一的变量MyContainer
has 是它从 Container
继承的那个.这List
,但是,当我将 child 列为 XmlList
时,不会使用 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 中的List。但是,JAXB 不会编码任何其他内容。
最佳答案
使用 @XmlElementWrapper
注释您的列表。参见 javadoc .
关于java - JAXB 没有按预期编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915201/