Последние два дня я экспериментировал как с JaxB, так и с Xstream. В основном я использовал библиотеки XML для маршалирования и демаршалинга XML в/из объектов Java. Это была очень простая задача, с которой я справился очень быстро. Однако XML, который я хочу преобразовать в список объектов Java, очень длинный и содержит множество дочерних элементов, которые можно игнорировать и не помещать в список объектов Java.
Например, XML-файл будет выглядеть примерно так:
Код: Выделить всё
Test1
2014-01-16
True
Test2
2014-01-15
False
Test1
2014-01-14
True
Я смотрел ValidationEventHandler и XmlAdapter в JaxB, но не думаю, что они позволят мне делать то, что я хочу. Я приблизился к Xmldapter, однако unmarshal должен возвращать либо ноль, либо объект для каждого дочернего элемента xml, который он обрабатывает, он также изменил синтаксис xml на форму атрибута, т. е. TYPE = «Test1» и т. д., который я не видел никакого способа изменить.
Xstream позволяет реализовать Converter с методом canConvert, однако это работает только с типом класса, а не с типом дочернего элемента, который я хотел проверить для каждого дочернего элемента. Посмотрел метод WrapMapper MapperWrapper, который можно перегрузить в Xstream, но он показывает только имя атрибута элемента, т. е. FLAG, и не показывает значение, а также, если он действительно показывал значение, я в любом случае не вижу указания функции игнорировать дочерний корневой элемент и все атрибуты для указанного дочернего элемента.
В любом случае, это мои два цента. Есть совет?
Мобильная версия