我最近使用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来填充这些属性的练习,如果是这样,那么解决这个问题的正确方法是什么?
答案 0 :(得分:2)
选项#1 - 将JAXB与StAX一起使用
您可以使用StAX XMLStreamReader
解析XML,然后前进到foos
元素并解组Foos
的实例。然后将XMLStreamReader
推进到foo
元素并解组Foo
的实例,依此类推。
了解更多信息
选项#2 - 创建包装器对象
您可以创建一个与根元素对应的包装器对象,然后解组该实例并从中获取单个对象。