当节点包含值时,使用 JAXB 将 XML 转换为对象

Posted

技术标签:

【中文标题】当节点包含值时,使用 JAXB 将 XML 转换为对象【英文标题】:Convert XML to Object with JAXB when node contains value 【发布时间】:2017-07-15 12:41:09 【问题描述】:

我以前曾使用过 JAXB,但我从未遇到过节点包含值的 XML。喜欢这个:

<node1>
  <node2 id="abc"/>
</node1>

我确实将node1 视为@XmlRootElement,然后我使用了一个带有@XmlElement 注释的Node2 对象列表。在 Node2 对象中,我创建了一个字符串变量“id”,如下所示

@XmlRootElement(name = "node1")
public class Node1

  @XmlElement(name="node2")
  private List<Node2> node2list;

  //get-set


public class Node2

  private String id;

  //get-set
 

问题是我无法获取 node2 的值。它总是给出空值。

【问题讨论】:

【参考方案1】:

node2 元素内没有值,这就是为什么你得到nullidnode2 中的属性,你必须使用@XmlAttribute 来获得id 的值。

【讨论】:

以上是关于当节点包含值时,使用 JAXB 将 XML 转换为对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 JAXB 获取 XML 子节点的值

JAXB实现java对象与xml之间转换

JAXB 实现java对象与xml之间互相转换

JAXB解析xml 的注解说明

通过JAXB完成Java对象与XML之间的转换

XML编程总结——使用JAXB进行java对象和xml格式之间的相互转换