Учитывая пример XML:
<fooRoot>
<bar>
<lol>LOLOLOLOL</lol>
</bar>
<noob>
<boon>
<thisIsIt></thisIsIt>
</boon>
</noob>
</fooRoot>
Что должно быть сопоставлено с:
class MyFoo {
String lol;
String thisIsIt;
Object somethingUnrelated;
}
Ограничения:
- XML не следует преобразовывать, он предоставляется в виде разобранного объекта org.w3c.dom.Document.
- Класс не отображает и не будет отображать 1: 1 в XML.
- Мне интересно только сопоставить конкретные пути XML с конкретными полями объекта.
Решение моей мечты будет выглядеть так:
@XmlMapped
class MyFoo {
@XmlElement("/fooRoot/bar/lol")
String lol;
@XmlElement("/noob/boon/thisIsIt")
String thisIsIt;
@XmlIgnore
Object somethingUnrelated;
}
Есть ли что-нибудь подобное? То, что я обнаружил, требовало строгого отображения 1: 1 (например, JMX, JAXB) или ручной итерации по всем полям (например, SAX, Commons Digester.)
Определения привязки JiBX подходят ближе всего к тому, что я ищу. Тем не менее, этот инструмент предназначен для маршаллирования / демаршаллизации полной иерархии Java-объектов. Я хотел бы только извлечь части документа XML в существующий компонент Java во время выполнения.