stringtranslate.com

StAX

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

Традиционно XML API бывают:

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

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

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

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

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

Примеры

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

Цитировать:

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

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

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

Внешние ссылки