@XMLRootElement 元素或数组名
@XMLRootElement element or array name
我目前正在尝试将 xml get 响应解组到一个复杂的 java 对象中。那个 java 对象还有其他 classes 作为字段,所以它很深。现在,我正在使用 JaxbMarshaller2 来完成这项工作。到目前为止一切顺利,但现在我有一个问题:
基本上 XML 流中的一个标签称为 "images" 并包含一组单独的图像项目,每个项目都包含在 "item" 标签中。
<images>
<item>
<name></name>
</item>
<item>
<name></name>
</item>
</images>
现在,在我的根 java class 中,我有一个名为 images 的 属性,它是这些图像项的列表(我制作了一个自定义 class对于这些项目。)
@XmlElement(name = "images")
private List<ProductImage> images;
好的,现在在 ProductImage class 中,class 名称上方的 XML 根元素是 @XmlRootElement(name="images")
还是 @XmlRootElement(name="item")
?
感谢您的回复。
只有 xml 文件的根元素 才需要 @XmlRootElement
注释。每个父代总是定义其子代标签的名称。但是由于根元素没有父元素,因此需要额外的注释来定义它的名称(即 @XmlRootElement
)。
选项 1:
假设<images>
节点是你的xml文件的根节点。
创建具有 @XmlRootElement(name="images")
注释的 class ProductImageCollection
。
在这个 class 里面应该有一个 List<ProductImage>
有一个注解 @XmlElement(name="image")
选项2:
假设你的<images>
节点是更大的xml结构的一部分,它已经有正确的注释。
那么您不需要任何额外的 @XmlRootElement
注释。您可以直接用 @XmlElementWrapper(name="images")
.
注释您的列表
我目前正在尝试将 xml get 响应解组到一个复杂的 java 对象中。那个 java 对象还有其他 classes 作为字段,所以它很深。现在,我正在使用 JaxbMarshaller2 来完成这项工作。到目前为止一切顺利,但现在我有一个问题:
基本上 XML 流中的一个标签称为 "images" 并包含一组单独的图像项目,每个项目都包含在 "item" 标签中。
<images>
<item>
<name></name>
</item>
<item>
<name></name>
</item>
</images>
现在,在我的根 java class 中,我有一个名为 images 的 属性,它是这些图像项的列表(我制作了一个自定义 class对于这些项目。)
@XmlElement(name = "images")
private List<ProductImage> images;
好的,现在在 ProductImage class 中,class 名称上方的 XML 根元素是 @XmlRootElement(name="images")
还是 @XmlRootElement(name="item")
?
感谢您的回复。
只有 xml 文件的根元素 才需要 @XmlRootElement
注释。每个父代总是定义其子代标签的名称。但是由于根元素没有父元素,因此需要额外的注释来定义它的名称(即 @XmlRootElement
)。
选项 1:
假设<images>
节点是你的xml文件的根节点。
创建具有 @XmlRootElement(name="images")
注释的 class ProductImageCollection
。
在这个 class 里面应该有一个 List<ProductImage>
有一个注解 @XmlElement(name="image")
选项2:
假设你的<images>
节点是更大的xml结构的一部分,它已经有正确的注释。
那么您不需要任何额外的 @XmlRootElement
注释。您可以直接用 @XmlElementWrapper(name="images")
.