Разбор XML-файла с использованием Java - PullRequest
0 голосов
/ 03 февраля 2011

Мне нужно проанализировать XML-файл с помощью JAVA и создать синтаксический объект из этого XML-файла после анализа.

Мне это нужно при использовании Spring JMS, в которой производитель создает xml-файл. Сначала мне нужно прочитать xml-файл и предпринять соответствующие действия.

Я прочитал кое-что о разборе и пришел с этим параметром

  1. 1008 * XPath *
  2. ДОМ

Что будет лучшим вариантом для анализа XML-файла.

Ответы [ 5 ]

2 голосов
/ 03 февраля 2011

вы проверяли JAXB

1 голос
/ 03 февраля 2011

Существует три способа анализа XML-файла: SAX, DOM и StAX.

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

То, что вы используете, будет зависеть от вашего приложения - все они имеют встроенные библиотеки начиная с Java 6.

0 голосов
/ 03 февраля 2011

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

С другой стороны, вы можете использовать StAX. Работает аналогично DOM. Единственное отличие состоит в том, что он передает содержимое XML-документа, что позволяет лучше распределять память. С другой стороны, он не сохраняет информацию, которая уже была прочитана.

Посмотрите на: http://download.oracle.com/javaee/5/tutorial/doc/bnbem.html Он содержит подробную информацию как о методах синтаксического анализа, так и о примере кода. Надеюсь, это поможет.

0 голосов
/ 03 февраля 2011

Похоже, вы получаете сериализованный объект через обмен сообщениями Java. Посмотрите сначала, как объект сериализуется. Обычно это делается с помощью библиотеки (jaxb, axis, ...), и вы можете использовать ту же библиотеку для создания десериализатора.

Вам понадобится:

  1. XML-схема (файл xsd)
  2. Класс Java bean (очень полезно, он должен существовать)

Тогда обычно библиотека создает все вспомогательные классы и файлы, и вам не нужно заботиться о разборе.

0 голосов
/ 03 февраля 2011

если вам нужно создать объект, просто извлеките необходимые свойства и продолжайте ... Я рекомендую использовать StaX, для получения дополнительной информации см. это руководство .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...