1

我想用结构如下的 JAXB2 注释来编组和解组文档:

<mylist>
  <element />
  <element />
  <element />
</mylist>

它是一个格式良好的 XML 文档,它表示一系列元素。

显而易见的事情会导致某种包含列表的根元素:

@XmlRootElement(name="container")
public class Container {
    @XmlElement
    @XmlElementWrapper(name="mylist")
    public List<Element> getElements() {...}
}

但后来我得到一个关于 marshall 的文档,其中包含一个多余的根元素:

<container>
  <mylist>
    <element />
    <element />
    <element />
  </mylist>
</container>

我正在努力研究如何使用 JAXB2 执行此操作 - 我如何(取消)编组另一个对象不包含的列表或数组?

4

1 回答 1

1

您可以创建一个通用列表包装类,该类可以包含任何带有注释的类的集合@XmlRootElement。编组时,您可以将其包装在 的实例中JAXBElement以获取所需的根元素。

import java.util.*;
import javax.xml.bind.annotation.XmlAnyElement;

public class Wrapper<T> {

    private List<T> items = new ArrayList<T>();

    @XmlAnyElement(lax=true)
    public List<T> getItems() {
        return items;
    }

}

完整示例

于 2013-01-24T15:45:29.853 回答