Мне лично очень нравится использовать JAXB.
Вы можете взять этот образец XML и передать его генератору схемы XML (XSD). Затем возьмите XSD и сгенерируйте объекты Java с помощью инструмента XJC.
После того как ваши объекты Java сгенерированы, вы можете упорядочить (сохранить / экспортировать / записать) XML или распаковать (загрузить / импортировать / прочитать) его, используя классы Marshaller и Unmarshaller соответственно.
Раньше был онлайн-конвертер XML в XSD по адресу http://www.flame -ware.com / products / xml-2-xsd / , но в данный момент он не работает. Вы можете бесплатно загрузить экспресс-версию Visual Studio, чтобы выполнить то же самое.
Мне нравится этот урок для JAXB: http://download.oracle.com/javaee/5/tutorial/doc/bnbah.html
Обычно я использую SAX-разбор, только если я хочу получить полный контроль над всем, что анализируется во время анализа (почти никогда).
Мне не нравится использовать метод DOM, потому что он требует, чтобы весь документ XML был проанализирован, прежде чем вы на самом деле сможете что-то с ним сделать, и после того, как он проанализирован, вам нужно будет проделать дополнительную работу, чтобы сконфигурировать ваш анализатор / потребитель XML, чтобы знать что поля на самом деле делать с этим.
Что касается ваших динамических потомков, я бы просто включил в схему неограниченное количество объектов, представляющих пары ключ-значение. Это все равно сэкономит ваше время благодаря всему сгенерированному для вас коду.
Библиотека XmlBeans похожа на JAXB, но я предпочитаю последнюю, поскольку она была включена в базовый выпуск Java, а XmlBeans - нет.