У меня есть следующая структура модели документа.
<rootNode>
<node1>someValue</node1>
<node2>someValue</node2>
<groupOfNodes>
<groupNode>
<node3>someValue</node3>
<node4>someValue</node4>
</groupNode>
<groupNode>
<node3>someValue</node3>
<node4>someValue</node4>
</groupNode>
<groupNode>
<node3>someValue</node3>
<node4>someValue</node4>
</groupNode>
</groupOfNodes>
</rootNode>
Я понял, как сопоставить node1 и node2 с аннотированным POJO, и они отлично работают. Однако я немного застрял в том, как связать вложенные узлы в groupOfNodes со списком groupNodes. Это то, что у меня есть до сих пор. Я просмотрел список доступных аннотаций в java-документах и обнаружил, что @XmlList
и @XmlElementWrapper
могут быть наиболее близкими к тому, что мне нужно, но я не уверен, как их использовать в этом контексте. Когда я ставлю @XmlElementWrapper
, я получаю null в groupNodesList. Когда я помещаю @XmlList, я получаю исключение, говорящее, что GroupNode
— это сложный тип, который нужно поместить под @XmlList
.
@XmlRootElement(name="rootNode")
@XmlAccessorType(XmlAccessType.FIELD)
public class MyNodes {
@XmlElement(name="node1", required=false)
private String node1;
@XmlElement(name="node2", required=false)
private String node2;
//tried this for the nested nodes but groupNodesList is always empty
@XmlElementWrapper
@XmlElement(name="groupOfNodes", required=false)
private List<GroupNode> groupNodesList;
//getters setters
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class GroupNode {
@XmlElement(name="node3", required=false)
private String node3;
@XmlElement(name="node4", required=false)
private String node4;
//getters setters
}
Должен ли я вместо этого использовать XPath? Если возможно, я хотел бы увидеть пример кода с использованием стандартного JAXB2. В противном случае некоторые подсказки тоже были бы замечательными.
Я ценю это!