Некоторое время назад проводил опрос: "лучшая низкоуровневая библиотека для работы с XML".
Победил
http://xom.nu/ (быстрый легкий; лаконичное, но функциональное API) + знание XPath.
Последнее время требуется просто сохранить объект в XML (строго определенного вида) и прочитать обратно. Делать это на уровне DOM однообразно и скучно.
Решил выбрать и использовать что-нибудь высокоуровневое ~ OXM.
Исследование рынка показало, что есть JAXB, Castor, XMLBeans, JiBX, XStream, simple.sf.net, ваш вариант.
C XStream немного работал, Simple как-то смотрел. Почитал про JAXB.
Вопрос #1: вероятно стоит использовать JAXB (стандарт и вроде неплохой, функциональный), не тормозит, не глючит?
Или же есть конкуренты превосходящие его функциональностью, простотой, скоростью (Simple и JiBX вроде живенькие, например).
Если JAXB то какую реализацию, стандартную-встроенную или другую?
Вопрос #2: некоторые XML, которые хочется отобразить в классы имеют вид: [общий_тег_для_группы_сообщений тип=”конкретный тип сообщения”]общие и частные свойства объекта[/общий_тег_для_группы_сообщений]
Т.е. тег «общий_тег_для_группы_сообщений» реально должен отображаться на целую группу классов, наследуемых от одного родителя.
Как это сделать на JAXB или рекомендуемой вами OXM?
В сети куча вариантов как это сделать для полей/свойств объекта, но не нашел такого для xmlroot объекта.
Ну и обратная задача - сохранять классы с неким атрибутом, который в явном виде не присуствует в виде свойств/полей класса.
Пример: [request type="send"]...[/request] == SendRequest class, а
[request type="status"]...[/request] == StatusRequest class
SendRequest и StatusRequest наследуются от абстрактного Request, но не содержат поля/свойства type в себе - сам класс наследника определяет этот type.