我目前正在尝试将xml get响应解组为一个复杂的java对象。那个java对象有其他类作为字段,所以它非常深入。现在,我正在使用JaxbMarshaller2来完成这项工作。到目前为止一切进展顺利,但现在我有一个问题:
基本上,XML流中的一个标签被称为"图像"并包含一系列单独的图像项目,每个图像项目都包含在"项目"标签。
<images>
<item>
<name></name>
</item>
<item>
<name></name>
</item>
</images>
现在,在我的根java类中,我有一个名为images的属性,它是这些图像项的列表(我为这些项创建了一个自定义类。)
@XmlElement(name = "images")
private List<ProductImage> images;
好的,现在在ProductImage类中,类名上方的XML根元素是@XmlRootElement(name="images")
还是@XmlRootElement(name="item")
?
感谢您的回复。
答案 0 :(得分:0)
只有xml文件的根元素才需要@XmlRootElement
注释。每个父级始终定义其子级的标记名称。但由于根元素没有父元素,因此需要额外的注释来定义其名称(即@XmlRootElement
)。
<强>选项1:强>
假设<images>
节点是xml文件的根节点。
创建一个具有ProductImageCollection
注释的班级@XmlRootElement(name="images")
。
在此课程中,应该有一个List<ProductImage>
,其中有一个注释@XmlElement(name="image")
<强>选项2:强>
假设您的<images>
节点是更大的xml结构的一部分,它已经有正确的注释。
然后您不需要任何额外的@XmlRootElement
注释。您可以使用@XmlElementWrapper(name="images")
直接为您的列表添加注释。