java - JAXB 从 XML 检索单个元素

标签 java xml jaxb

我最近使用 xjc 工具创建了一系列基于 XSD 的对象。我遇到的问题是我从如下所示的源收到 XML:

<foos>  
</foos>  
<foo>
</foo>
<foo_detail_1>  
</foo_detail_1>  
<foo_detail_2>  
</foo_detail_2>

这并不理想。我的问题是,当我解码 XML 时,如何创建每个单独的对象?就像这样:

Foo foo = (Foo)um.unmarshal("myXML.xml");  
Foo_Detail_1 fd = (Foo_Detail_1)um.unmarshal("myXML.xml");

或者这更多的是利用 XPath 填充这些属性的练习,如果是的话,正确的方法是什么?

最佳答案

选项 #1 - 将 JAXB 与 StAX 结合使用

您可以使用 StAX XMLStreamReader 解析 XML,然后前进到 foos 元素并解码 Foos 的实例。然后将 XMLStreamReader 前进到 foo 元素并解码 Foo 的实例,依此类推。

了解更多信息

选项 #2 - 创建包装对象

您可以创建一个与根元素相对应的包装对象,然后解码该对象的实例并从中获取各个对象。

关于java - JAXB 从 XML 检索单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16837219/

相关文章:

java - 使用 JAXB 将 Xml 字符串转换为对象

java - JBAS014613 : Operation ("deploy") failed - address: ([ ("deployment" => "test.war")])

python - 在 python 中安全的 xml 解析

xml - 如何在Perl中比较不同元素的XML属性值

java - 使用 XML 文件和生成的 JAXB 帮助器类将多个对象条目编码到一个文件中

java - 将数据从 XML 加载到列表

java - 如何使用 Netty 读取 HTTP 请求的主体?

java - 硬件 : Java program generating NullPointerException error message

Java equals 方法。如何返回比较对象内每个属性的多个 boolean 值

java - 如何将 joda-time 与 jaxb 绑定(bind)