在标准 JAXB2 POJO 中绑定嵌套元素
我有以下文档模型结构。
<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 的代码示例。否则一些提示也很棒。
我很感激!
I have the following document model structure.
<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>
I have figured out how to map node1 and node2 to an annotated POJO and they work perfectly. However, I am kind of stuck on how to bind the nested nodes in groupOfNodes to a List of groupNodes. This is what I have so far. I went through the available annotations list on the java docs and I found that @XmlList
and @XmlElementWrapper
may be the closest to what I am wanting but I am not sure how to use them in this context. When I put @XmlElementWrapper
I get null in groupNodesList. When I put @XmlList I get an exception saying that GroupNode
is a complex type to be put under @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
}
Should I be using XPath instead? If possible I would like to see a code example using standard JAXB2. Otherwise some hints would be great too.
I appreciate it!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
以下是您所需要的:
有关 JAXB 和集合的更多信息,请参阅:
The following is what you need:
For more information on JAXB and collections see: