Java: Парсинг xml
Хочу увидеть наиболее простой и компактный алгоритм парсинга xml в java. Любые библиотеки, классы. м?
Хочу увидеть наиболее простой и компактный алгоритм парсинга xml в java. Любые библиотеки, классы. м?
Единого общепринятого средства для парсинга 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, то используйте стандартный способ:
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file)
Можно ещё воспользоваться domj4 Но на мой взгляд выигрыш невелик, а библиотеку дополнительную тащить не очень хочется.
Если потоковый, так вы сами ответили на свой вопрос: используйте SAX