(~ 7 лет слишком поздно, но все же)
Чтобы противоречить принятому ответу, я очень сомневаюсь, что JAXB реализован поверх DOM - для этого потребуются две объектная модель s (Java и DOM) и будет полностью преодолен смысл привязки XML ( XB в JAXB) хуже для производительности / пространства, это потребовало бы, чтобы обе модели поддержали друг друга.
Мне кажется, JAXB - это четкий аналог DOM при рассмотрении подходов к обработке двунаправленного отображения XML в Java. DOM и JAXB - это просто примеры того, что IBM называет XOM .
Почти во всех случаях я бы предпочел JAXB, а не DOM, и предпочел бы ручную обработку, а не SAX, в первую очередь потому, что я считаю, что SAX и DOM API "не зависят от языка" и являются совершенно гротескными.
Очевидно, что если ваш набор данных слишком велик, чтобы поместиться в память, тогда объектная модель будет нежизнеспособной. В противном случае
Как выбрать:
- Имеете модель Java или загружаете ее из XML? это сериализация, просто используйте JAXB
- Нет модели Java, первостепенное значение времени / пространства, простой однопроходный атрибут / запрос элемента, схема неизвестна? Используйте SAX
- Нет модели Java и первостепенного значения времени / пространства, но схема известна, неизменна и проста? Сверните, серьезно, это тривиально (однако для проверки реализации используйте XSD, JAXB и codegen)
- Является ли схема XML неизвестной априори, может быть изменена без уведомления или разрешает произвольные неизвестные (с расширением имен) расширения? Используйте DOM
- XML-схема заблокирована или вам принадлежит? Используйте JAXB