Недавно я создал серию объектов на основе XSD с использованием инструмента xjc
. Проблема заключается в том, что я получаю XML из источника, который выглядит так:JAXB извлекает отдельные элементы из 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 для заполнения этих атрибутов и если это так, что это правильный способ приблизиться к этому?
Я бы предпочел, чтобы это было сделано за один проход, возможно ли предотвратить повторение полного документа несколько раз? FWIW весь файл поместится в памяти – Woot4Moo
@ Woot4Moo - Парсер StAX будет проходить только один раз. В качестве альтернативы вы можете создать корневой объект, который содержит все отдельные объекты. –
Итак, если я создаю узел обертки, я могу просто сделать Wrapper w = (Wrapper) unmarshall (myXml.xml) 'и чем играть с коллекцией объектов? – Woot4Moo