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