Java: Парсинг xml

Рейтинг: 3Ответов: 2Опубликовано: 14.04.2011

Хочу увидеть наиболее простой и компактный алгоритм парсинга xml в java. Любые библиотеки, классы. м?

Ответы

▲ 4

Единого общепринятого средства для парсинга XML в java нет, поэтому перечислю наиболее распространенные парсеры:

DOM (Document Object Model – объектная модель документов) – платформенно-независимый программный интерфейс, позволяющий программам и скриптам управлять содержимым документов HTML и XML, а также изменять их структуру и оформление. Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого содержит элемент, атрибут, текстовый, графический или любой другой объект. Узлы связаны между собой отношениями родитель-потомок

SAX (Simple API for XML) - событийно-ориентированное API. способ последовательного чтения/записи XML-файлов.

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

JDOM (Java Document Object Model) - это свободная Java-реализация DOM для XML, созданная с учётом особенностей языка и платформы Java. JDOM интегрируется с Document Object Model (DOM) и Simple API for XML (SAX), поддерживает XPath и XSLT. В JDOM используются внешние парсеры для генерации документов. JDOM

StAX - Потоковый API для XML. Представляет собой самый последний стандарт обработки данных XML в языке Java. Как поточный метод, он часто оказывается лучшей альтернативой, чем другие методы, например, DOM и SAX, и в отношении производительности, и в отношении удобства в работе.

Все парсеры имеют свои особенности:

  • по разбору элементов,
  • по возможностям изменениям элементов в документе
  • по алгоритму перехода между элементами (DOM, например, читает документ полностью и лишь после этого приступает к его разбору, a SAX разбирает документ по частям)
  • по наличию алгоритма валидации документов (не все парсеры позволяют проверять документ на правильность и валидность, например по схеме XSD)
  • и многие многие другие особенности...

Все особенности этих парсеров влияют на их производительность, чем больше наворотов парсера тем медленнее он работает...

Иногда нужно разбирать документ полностью, иногда нужно найти все элементы определенного типа, а иногда только один элемент в документе.

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

▲ 2

Какой парсинг вам нужен? Если DOM, то используйте стандартный способ:

DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file)

Можно ещё воспользоваться domj4 Но на мой взгляд выигрыш невелик, а библиотеку дополнительную тащить не очень хочется.

Если потоковый, так вы сами ответили на свой вопрос: используйте SAX