2

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 填充这些属性的练习,如果是这样,解决这个问题的正确方法是什么?

4

1 回答 1

2

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

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

了解更多信息

选项 #2 - 创建一个包装对象

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

于 2013-05-30T13:21:05.393 回答