Лучший анализатор XML для Java [закрыто]

Более питоновским способом будет использование контекстных менеджеров, таких как код ниже:

from tempfile import mkstemp
from shutil import move
from os import remove

def replace(source_file_path, pattern, substring):
    fh, target_file_path = mkstemp()
    with open(target_file_path, 'w') as target_file:
        with open(source_file_path, 'r') as source_file:
            for line in source_file:
                target_file.write(line.replace(pattern, substring))
    remove(source_file_path)
    move(target_file_path, source_file_path)

Здесь вы можете найти полный фрагмент здесь .

382
задан Elliot Chance 26 October 2015 в 03:22
поделиться

6 ответов

Если скорость и память не являются никакой проблемой, , dom4j является действительно хорошим вариантом. При необходимости в скорости с помощью синтаксического анализатора StAX как , Woodstox является правильным путем, но необходимо записать больше кода для добиваний цели, и необходимо привыкнуть для обработки XML в потоках.

80
ответ дан informatik01 26 October 2015 в 03:22
поделиться

Я нашел, что dom4j инструмент для работы с XML. Особенно по сравнению с Xerces.

3
ответ дан informatik01 26 October 2015 в 03:22
поделиться

Я думаю, что Вы не должны рассматривать определенную реализацию синтаксического анализатора. API Java для обработки XML позволяет Вам использовать любую реализацию синтаксического анализатора приспосабливания стандартным способом. Код должен быть намного более портативным, и когда Вы понимаете, что определенный синтаксический анализатор стал слишком старым, можно заменить его другим, не изменяя строку кода (если Вы делаете это правильно).

В основном существует три способа обработать XML стандартным способом:

  • SAX Это - самый простой API. Вы читаете XML путем определения класса Обработчика, который получает данные в элементах/атрибутах, когда XML обрабатывается последовательным способом. Это быстрее и более просто, если Вы только планируете считать некоторые атрибуты/элементы и/или записать некоторые значения обратно (Ваш случай).
  • DOM Этот метод создает дерево объектов, которое позволяет Вам изменить/получить доступ его случайным образом, таким образом, это лучше для сложного управления XML и обработки.
  • StAX Это посреди пути между SAX и DOM. Вы просто пишете код для получения по запросу данных из синтаксического анализатора, Вы интересуетесь тем, когда это обрабатывается.

Забывают о собственных API, таких как JDOM или Apache (т.е. Apache Xerces XMLSerializer), потому что свяжет Вас с определенной реализацией, которая может развиться вовремя или потерять назад совместимость, которая заставит Вас изменить свой код в будущем, когда Вы захотите обновить до новой версии JDOM или безотносительно синтаксического анализатора, Вы используете. Если Вы будете придерживаться API стандарта Java (использующий фабрики и интерфейсы), то Ваш код будет намного более модульным и удобным в сопровождении.

нет никакой потребности сказать, что все (я не проверил все, но я почти уверен) предложенных синтаксических анализаторов, выполняют реализацию JAXP так технически, можно использовать все, неважно, который.

252
ответ дан user3431884 26 October 2015 в 03:22
поделиться

Если Вы заботитесь меньше о производительности, я - большой поклонник Систематизатора Apache, так как это по существу позволяет Вам отобразиться непосредственно от XML до Бобов Java.

Иначе, необходимо сначала проанализировать и затем создать объекты.

1
ответ дан Uri 26 October 2015 в 13:22
поделиться

В дополнение к SAX и DOM там STaX, анализирующий доступное использование XMLStreamReader, который является синтаксическим анализатором получения по запросу xml.

4
ответ дан 26 October 2015 в 13:22
поделиться

Я не был бы, рекомендовал, чтобы это было, у Вас есть большое "размышление" в Вашем приложении, но использование, XSLT мог быть лучше (и потенциально быстрее с компиляцией XSLT к байт-коду), чем управление Java.

2
ответ дан 26 October 2015 в 13:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: