Разбор XML-элементов в JAVA - PullRequest
0 голосов
/ 16 марта 2012
  1. Я хочу проанализировать XML в Java. Это будет DOM или SAX. Прочитайте в книге JAXP это хорошо. Также, когда я гуглял, нашел XERCES / XALAN. Какой парсер обычно используется?

  2. В SAX Parser, если я зарегистрируюсь для отдельного события элемента, SAX-анализ прекратит обработку сообщения XML после обнаружения элемента. Прочитайте в книге DOM читает весь XML и загружает в память, даже если я хочу узнать значение одного элемента.

Ответы [ 5 ]

8 голосов
/ 16 марта 2012

Я хочу разобрать XML в Java.Это будет DOM или SAX.Прочитайте в книге JAXP это хорошо.Также, когда я гуглял, нашел XERCES / XALAN.Какой синтаксический анализатор обычно используется?

Xerces - это реализация DOM и SAX, и она встроена в JDK.См. javax.xml.parsers.

В SAX Parser, если я зарегистрируюсь для отдельного события элемента, SAX-анализ прекратит обработку сообщения XML после обнаружения элемента.

Нет.

Читать в книге DOM читает весь XML и загружает в память, даже если я хочу узнать значение одного элемента.

Да.

2 голосов
/ 16 марта 2012
  1. Все вышеперечисленные парсеры, которые вы упомянули, превосходны. Моим личным предпочтением было бы использование XERCES, если приложение выполняло большую часть обработки XML, иначе «встроенные» парсеры более чем достаточно хороши.

  2. Вам нужно будет обрабатывать каждое событие из синтаксического анализатора SAX и игнорировать те, которые вам не интересны. Вы можете прекратить синтаксический анализ в любой момент, "уничтожив" объект синтаксического анализатора. Если вас интересует только один или два элемента большого сообщения, тогда SAX - это то, что вам нужно. Если вы интересуетесь всеми или большинством элементов, тогда используйте анализатор DOM, у вас небольшой выигрыш в производительности, но API «дай мне то, что я хочу» делает код намного понятнее, чем SAX «возьми то, что я тебе даю» API.

1 голос
/ 16 марта 2012

Для простого XML в POJO я обнаружил, что XStream является наименее раздражающим из всех анализаторов в Java:

http://x -stream.github.io /

1 голос
/ 16 марта 2012

Я не уверен, что понимаю все детали того, чего вы хотите достичь, но если у вас есть файлы xsd, описывающие формат XML, я бы сказал, что JAXB - это путь. Это займет у вас xsd и автоматически сгенерирует классы для вас. Тогда вы можете легко переходить вперед и назад - маршал и демаршал данных. Недавно я был очень впечатлен уровнем автоматизации в Netbeans, когда решил аналогичную задачу

Надеюсь, мое предложение посмотреть JAXB полезно.

0 голосов
/ 16 марта 2012

DOM и SAX являются интерфейсами, Xerces является наиболее популярной реализацией этих интерфейсов. На самом деле существует две версии Xerces: одна от Apache и другая, встроенная в JDK Sun / Oracle. Один в JDK глючит; используйте тот из Apache в предпочтении.

Поскольку вы только начинаете, вероятно, стоит взглянуть шире, чем DOM и SAX. SAX - это очень низкоуровневый интерфейс, предлагающий хорошую производительность, но малую функциональность: вы можете ожидать довольно много сложного кода в своем приложении, если вы идете по этому пути. DOM представляет вам древовидную модель XML, но есть гораздо лучшие и более простые интерфейсы, которые делают то же самое: JDOM предлагает все, что вам нужно, и гораздо проще в использовании, чем DOM.

...