Учебники

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 – это PULL API, тогда как SAX – это PUSH API. Это означает, что в случае синтаксического анализатора StAX клиентское приложение должно запрашивать синтаксический анализатор StAX для получения информации из XML всякий раз, когда это необходимо, но в случае синтаксического анализатора SAX клиентское приложение должно получать информацию, когда синтаксический анализатор SAX уведомляет клиентское приложение о том, что информация доступен.

StAX API может читать и писать документы XML. Используя SAX API, xml можно только читать.

Ниже приведены функции API StAX –

  • Читает XML-документ сверху вниз, распознавая токены, которые составляют правильно сформированный XML-документ.

  • Токены обрабатываются в том же порядке, в котором они указаны в документе.

  • Сообщает прикладной программе о природе токенов, с которыми синтаксический анализатор сталкивался по мере их появления.

  • Прикладная программа предоставляет «читатель» события, который действует как итератор и выполняет итерацию по событию, чтобы получить необходимую информацию. Другое доступное средство чтения – это средство чтения «курсора», которое действует как указатель на узлы xml.

  • Когда события идентифицированы, элементы xml могут быть извлечены из объекта события и могут быть обработаны в дальнейшем.

Читает XML-документ сверху вниз, распознавая токены, которые составляют правильно сформированный XML-документ.

Токены обрабатываются в том же порядке, в котором они указаны в документе.

Сообщает прикладной программе о природе токенов, с которыми синтаксический анализатор сталкивался по мере их появления.

Прикладная программа предоставляет «читатель» события, который действует как итератор и выполняет итерацию по событию, чтобы получить необходимую информацию. Другое доступное средство чтения – это средство чтения «курсора», которое действует как указатель на узлы xml.

Когда события идентифицированы, элементы xml могут быть извлечены из объекта события и могут быть обработаны в дальнейшем.

Когда использовать?

Вы должны использовать анализатор StAX, когда –

  • Вы можете обрабатывать XML-документ линейно сверху вниз.

  • Документ не является глубоко вложенным.

  • Вы обрабатываете очень большой XML-документ, дерево DOM которого будет занимать слишком много памяти. Типичные реализации DOM используют десять байтов памяти для представления одного байта XML.

  • Проблема, которая должна быть решена, включает только часть XML-документа.

  • Данные становятся доступными, как только они анализируются парсером, поэтому StAX хорошо работает для XML-документа, который поступает через поток.

Вы можете обрабатывать XML-документ линейно сверху вниз.

Документ не является глубоко вложенным.

Вы обрабатываете очень большой XML-документ, дерево DOM которого будет занимать слишком много памяти. Типичные реализации DOM используют десять байтов памяти для представления одного байта XML.

Проблема, которая должна быть решена, включает только часть XML-документа.

Данные становятся доступными, как только они анализируются парсером, поэтому StAX хорошо работает для XML-документа, который поступает через поток.

Недостатки SAX

  • У нас нет произвольного доступа к документу XML, так как он обрабатывается только для пересылки.

  • Если вам нужно отслеживать данные, которые анализатор видел, или изменять порядок элементов, вы должны написать код и сохранить данные самостоятельно.

У нас нет произвольного доступа к документу XML, так как он обрабатывается только для пересылки.

Если вам нужно отслеживать данные, которые анализатор видел, или изменять порядок элементов, вы должны написать код и сохранить данные самостоятельно.

Класс XMLEventReader

Этот класс предоставляет итератор событий, который можно использовать для итерации по событиям, возникающим при анализе документа XML.

  • StartElement asStartElement () – Используется для получения значения и атрибутов элемента.

  • EndElement asEndElement () – Вызывается в конце элемента.

  • Символы asCharacters () – могут использоваться для получения таких символов, как CDATA, пробелы и т. Д.

StartElement asStartElement () – Используется для получения значения и атрибутов элемента.

EndElement asEndElement () – Вызывается в конце элемента.

Символы asCharacters () – могут использоваться для получения таких символов, как CDATA, пробелы и т. Д.

Класс XMLEventWriter

Этот интерфейс определяет методы для создания события.

  • add (Событие события) – добавляет событие, содержащее элементы, в XML.

add (Событие события) – добавляет событие, содержащее элементы, в XML.

Класс XMLStreamReader

Этот класс предоставляет итератор событий, который можно использовать для итерации по событиям, возникающим при анализе XML-документа.

  • int next () – Используется для получения следующего события.

  • boolean hasNext () – Используется, чтобы проверить, существуют ли другие события или нет

  • String getText () – используется для получения текста элемента

  • String getLocalName () – используется для получения имени элемента

int next () – Используется для получения следующего события.

boolean hasNext () – Используется, чтобы проверить, существуют ли другие события или нет

String getText () – используется для получения текста элемента

String getLocalName () – используется для получения имени элемента

Класс XMLStreamWriter

Этот интерфейс определяет методы для создания события.

writeStartElement (String localName) – добавляет начальный элемент с заданным именем.

writeEndElement (String localName) – добавляет конечный элемент с заданным именем.

writeAttribute (String localName, String value) – записывает атрибут в элемент.