JAXB Маршрутизация списка переменных с одинаковым именем

В соответствии с заголовком у меня есть XML файл, который мне нужно отменить:

<?xml version="1.0"?>
<root>
    <wrap>
        <Element>something1</Element>
        <Element>something2</Element>
        <Element>something3</Element>
    </wrap>
</root>

"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;
    }
}

класс элемента:

@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;
    }
}

Попытка размонтировать 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>

Я исследовал это некоторое время с предположениями, что мои аннотации неверны, но, возможно, это что-то еще...

Ответ 1

Вам нужно сделать следующее:

  • аннотировать свойство element в классе element с помощью @XmlValue.
  • убедитесь, что имена элементов в аннотации соответствуют именам в документе XML.

Дополнительная информация