JAXB从XML检索单个元素

时间:2013-05-30 13:14:32

标签: 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 个答案:

答案 0 :(得分:2)

选项#1 - 将JAXB与StAX一起使用

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

了解更多信息

选项#2 - 创建包装器对象

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