JAXB @XmlElementWrapper使用包装对象的@XmlRootElement

时间:2014-08-20 20:05:12

标签: java jaxb

如何告诉JAXB使用@XmlRootElement集合中包含的@XmlElementWrapper数据注释?我知道您可以使用@XmlElement来命名每个单独的项目,但我很想知道是否有办法让它自动为我挑选。

例如:

@XmlElementWrapper (name = "records")
private List<?> records;

将生产:

<records>
    <records ...>
        <child_with_proper_name ... />
</records>

但是让我们说List包含以下对象:

@XmlRootElement (name = "my_element")

我想生成这个:

<records>
    <my_element>
        <child_with_proper_name />
    </my_element>
</records>

不这样做:

@XmlElementWrapper (name = "records")
@XmlElement (name = "my_element")
private List<?> records;

似乎就像它应该知道拿起@XmlRootElement名称一样,但它没有这样做。

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

@XmlElementWrapper (name = "records")
@XmlAnyElement(lax=true)
private List<?> records;

注意

在解组操作中,遇到的任何与@XmlRootElement注释无关的元素都将保留为DOM节点。