Я думаю, что вы не должны рассматривать какую-либо конкретную реализацию парсера. Java API для обработки XML позволяет вам использовать любую соответствующую реализацию синтаксического анализатора стандартным способом. Код должен быть намного более переносимым, и когда вы понимаете, что определенный синтаксический анализатор слишком стар, вы можете заменить его другим без изменения строки кода (если вы делаете это правильно).
В основном есть три способа обработки XML стандартным способом:
- SAX Это самый простой API. Вы читаете XML, определяя класс Handler, который получает данные внутри элементов / атрибутов, когда XML обрабатывается последовательным способом. Это быстрее и проще, если вы планируете только читать некоторые атрибуты / элементы и / или записывать некоторые значения обратно (ваш случай).
- DOM Этот метод создает дерево объектов, которое позволяет вам изменять / получать к нему доступ случайным образом, так что это лучше для сложных манипуляций и обработки XML.
- StAX Это середина пути между SAX и DOM. Вы просто пишете код для извлечения данных из интересующего вас синтаксического анализатора при его обработке.
Забудьте о проприетарных API, таких как JDOM или Apache (например, Apache Xerces XMLSerializer ), потому что они привязывают вас к конкретной реализации, которая может эволюционировать во времени или терять обратную совместимость, что заставит вас изменить свой код в будущем, когда вы захотите выполнить обновление до новая версия JDOM или любой другой парсер, который вы используете. Если вы будете придерживаться стандартного API Java (используя фабрики и интерфейсы), ваш код будет гораздо более модульным и обслуживаемым.
Нет необходимости говорить, что все (я не проверял все, но я почти уверен) из предложенных синтаксических анализаторов соответствуют реализации JAXP, так что технически вы можете использовать все, независимо от того, какой именно.