JAXB编组具有相同名称的元素的变量列表

use*_*198 15 java xml annotations jaxb

根据标题,我有一个我需要解组的XML文件:

<?xml version="1.0"?>
<root>
    <wrap>
        <Element>something1</Element>
        <Element>something2</Element>
        <Element>something3</Element>
    </wrap>
</root>
Run Code Online (Sandbox Code Playgroud)

"wrap"只是一个包装器,但"元素"的数量会有所不同.

我有两个类来为JAXB提供便利:

换类:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "root")
public class Wrap {
    @XmlElementWrapper(name = "wrap")
    @XmlElement(name = "Element")
    private List<Element> elementList = new ArrayList<>();

    public Wrap() {}

    public Wrap(List<Element> list) {
        this.elementList = list;
    }

    public void addElement(Element element) {
        this.elementList.add(element);
    }

    public List<Element> getWrap() {
        return this.elementList;
    }

    public void setWrap(List<Element> wrap) {
        this.elementList = wrap;
    }
}
Run Code Online (Sandbox Code Playgroud)

元素类:

@XmlRootElement(name = "Element")
public class Element {

    private String Element;

    public Element() {}

    public Element(String element) {
        this.Element = element;
    }

    public String getElement() {
        return Element;
    }

    public void setElement(String element) {
        this.Element = element;
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,尝试解组XML完成而没有错误,元素值不与元素对象一起存储.相反,toString为每个对象返回null.

我确实用一些数据填充对象并将它们编组到一个文件中(如下所示).当然,这种格式不正确,应该与上面的XML相匹配.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
    <wrap>
        <Element>
            <element>entry1</element>
        </Element>
        <Element>
            <element>entry2</element>
        </Element>
        <Element>
            <element>entry3</element>
        </Element>
    </wrap>
</root>
Run Code Online (Sandbox Code Playgroud)

我已经研究了一段时间了,假设我的注释是不正确的,但也许这是其他的......

bdo*_*han 7

您需要执行以下操作:

  • 用 注释类element上的属性。Element@XmlValue
  • 确保注释中元素名称的大小写与 XML 文档中的名称匹配。

想要查询更多的信息