StAX Parser - Обзор
StAX - это API на основе JAVA для анализа XML-документа аналогично синтаксическому анализатору SAX. Но есть два основных различия между двумя API:
StAX - это PULL API, тогда как SAX - это PUSH API. Это означает, что в случае парсера StAX клиентское приложение должно запрашивать парсер StAX для получения информации из XML всякий раз, когда это необходимо, но в случае парсера SAX клиентское приложение требуется для получения информации, когда парсер SAX уведомляет клиентское приложение об этой информации. доступен.
StAX API может читать, а также писать XML-документы. Используя SAX API, xml можно только читать.
Ниже приведены особенности StAX API:
Читает XML-документ сверху вниз, распознавая токены, составляющие правильно сформированный XML-документ.
Токены обрабатываются в том же порядке, в котором они указаны в документе.
Сообщает прикладной программе о характере токенов, обнаруженных синтаксическим анализатором при их возникновении.
Прикладная программа предоставляет средство чтения "событий", которое действует как итератор и выполняет итерацию по событию для получения необходимой информации. Другой доступный читатель - это читатель "курсора", который действует как указатель на узлы xml.
По мере идентификации событий элементы xml могут быть извлечены из объекта события и могут быть обработаны дальше.
Когда использовать?
Вам следует использовать парсер StAX, когда -
Вы можете обрабатывать XML-документ линейно сверху вниз.
Документ не глубоко вложен.
Вы обрабатываете очень большой XML-документ, дерево DOM которого будет занимать слишком много памяти. Типичные реализации DOM используют десять байтов памяти для представления одного байта XML.
Решаемая проблема касается только части XML-документа.
Данные доступны, как только они видны парсеру, поэтому StAX хорошо работает для XML-документа, который поступает в потоке.
Недостатки SAX
У нас нет произвольного доступа к XML-документу, поскольку он обрабатывается в режиме «только вперед».
Если вам нужно отслеживать данные, которые анализатор видел, или изменять порядок элементов, вы должны написать код и сохранить данные самостоятельно.
XMLEventReader Класс
Этот класс предоставляет итератор событий, который можно использовать для итерации событий по мере их возникновения при анализе XML-документа.
StartElement asStartElement() - Используется для получения значения и атрибутов элемента.
EndElement asEndElement() - Вызывается в конце элемента.
Characters asCharacters() - Может использоваться для получения таких символов, как CDATA, пробелы и т. Д.
XMLEventWriter Класс
Этот интерфейс определяет методы для создания события.
add(Event event) - Добавляет событие, содержащее элементы в XML.
XMLStreamReader Класс
Этот класс предоставляет итератор событий, который можно использовать для перебора событий по мере их возникновения при анализе XML-документа.
int next() - Используется для получения следующего события.
boolean hasNext() - Используется для проверки наличия или отсутствия дальнейших событий
String getText() - Используется для получения текста элемента
String getLocalName() - Используется для получения имени элемента
XMLStreamWriter - класс
Этот интерфейс определяет методы для создания события.
writeStartElement(String localName) - Добавляет начальный элемент заданного имени.
writeEndElement(String localName) - Добавляет конечный элемент заданного имени.
writeAttribute(String localName, String value) - Записывает атрибут в элемент.