Мне нужно прочитать мелкие (не более нескольких МБ, в кодировке UTF-8) XML-файлы, покопаться в поиске различных элементов и атрибутов, возможно изменить несколько и записать XML-файл обратно на диск (желательно с nice, форматирование с отступом).
Какой парсер XML будет лучшим для моих нужд? Есть из чего выбирать. Некоторые из них мне известны:
И, конечно, тот, что в JDK (я использую Java 6). Я знаком с Xerces, но считаю это неуклюжим.
Рекомендации?
Если скорость и память не являются никакой проблемой, , dom4j является действительно хорошим вариантом. При необходимости в скорости с помощью синтаксического анализатора StAX как , Woodstox является правильным путем, но необходимо записать больше кода для добиваний цели, и необходимо привыкнуть для обработки XML в потоках.
Я думаю, что Вы не должны рассматривать определенную реализацию синтаксического анализатора. API Java для обработки XML позволяет Вам использовать любую реализацию синтаксического анализатора приспосабливания стандартным способом. Код должен быть намного более портативным, и когда Вы понимаете, что определенный синтаксический анализатор стал слишком старым, можно заменить его другим, не изменяя строку кода (если Вы делаете это правильно).
В основном существует три способа обработать XML стандартным способом:
Забывают о собственных API, таких как JDOM или Apache (т.е. Apache Xerces XMLSerializer), потому что свяжет Вас с определенной реализацией, которая может развиться вовремя или потерять назад совместимость, которая заставит Вас изменить свой код в будущем, когда Вы захотите обновить до новой версии JDOM или безотносительно синтаксического анализатора, Вы используете. Если Вы будете придерживаться API стандарта Java (использующий фабрики и интерфейсы), то Ваш код будет намного более модульным и удобным в сопровождении.
нет никакой потребности сказать, что все (я не проверил все, но я почти уверен) предложенных синтаксических анализаторов, выполняют реализацию JAXP так технически, можно использовать все, неважно, который.
В дополнение к SAX и DOM там STaX, анализирующий доступное использование XMLStreamReader, который является синтаксическим анализатором получения по запросу xml.
Если Вы заботитесь меньше о производительности, я - большой поклонник Систематизатора Apache, так как это по существу позволяет Вам отобразиться непосредственно от XML до Бобов Java.
Иначе, необходимо сначала проанализировать и затем создать объекты.
Я не был бы, рекомендовал, чтобы это было, у Вас есть большое "размышление" в Вашем приложении, но использование, XSLT мог быть лучше (и потенциально быстрее с компиляцией XSLT к байт-коду), чем управление Java.
Я нашел, что dom4j инструмент для работы с XML. Особенно по сравнению с Xerces.