在标准JAXB2 POJO中绑定嵌套元素

时间:2011-03-29 18:14:34

标签: java jaxb jaxb2 rest-client

我有以下文档模型结构。

<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时,我在groupNodesList中得到null。当我放置@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的代码示例。否则一些提示也会很棒。

我很感激!

1 个答案:

答案 0 :(得分:2)

以下是您的需求:

@XmlElementWrapper(name="groupOfNodes")
@XmlElement(name="groupNode")   
private List<GroupNode> groupNodesList;

有关JAXB和集合的更多信息,请参阅: