StAX - Википедия - StAX

Потоковый API для XML (StAX) - это интерфейс прикладного программирования (API ) читать и писать XML документы, происходящие из Язык программирования Java сообщество.

Традиционно XML API:

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

У обоих есть преимущества: ДОМ, например, обеспечивает произвольный доступ к документу и алгоритм, управляемый событиями, например SAX занимает мало места в памяти и обычно работает намного быстрее.

Эти две метафоры доступа можно рассматривать как полярные противоположности. API на основе дерева обеспечивает неограниченный произвольный доступ и манипуляции, в то время как API на основе событий - это «одноразовый» проход через исходный документ.

StAX был разработан как медиана между этими двумя противоположностями. В метафоре StAX программная точка входа - это курсор, который представляет точку в документе. Приложение перемещает курсор вперед - «вытягивая» информацию из парсера по мере необходимости. Это отличается от API, основанного на событиях, такого как SAX, который «подталкивает» данные к приложению, требуя, чтобы приложение поддерживало состояние между событиями по мере необходимости для отслеживания местоположения в документе.

Происхождение

StAX имеет свои корни в ряде несовместимых pull API для XML, в первую очередь XMLPULL, авторы которых (Стефан Хаустейн и Александр Сломинский) сотрудничали, среди прочего, с BEA Systems, Oracle, солнце и Джеймс Кларк.

Примеры

Из спецификации JSR-173 • Final, V1.0 (используется на условиях добросовестного использования).

Цитировать:

В следующем API Java показаны основные методы чтения XML с использованием курсорного подхода.
общественный интерфейс XMLStreamReader {     общественный int следующий() бросает XMLStreamException;     общественный логический hasNext() бросает XMLStreamException;     общественный Нить getText();     общественный Нить getLocalName();     общественный Нить getNamespaceURI();     // ... другие методы не показаны }
На стороне записи API есть методы, соответствующие стороне чтения для типов событий «StartElement» и «EndElement».
общественный интерфейс XMLStreamWriter {     общественный пустота writeStartElement(Нить localName) бросает XMLStreamException;    общественный пустота writeEndElement() бросает XMLStreamException;     общественный пустота writeCharacters(Нить текст) бросает XMLStreamException;     // ... другие методы не показаны }
5.3.1 XMLStreamReader
В этом примере показано, как создать экземпляр фабрики ввода, создать средство чтения и перебрать элементы XML-документа.
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(...); пока (xmlStreamReader.hasNext()) {     xmlStreamReader.следующий(); }

Смотрите также

Конкурирующие и дополнительные способы обработки XML в Java (порядок ориентирован на начальную дату введения):

внешняя ссылка