Jump to content

StAX

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

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

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

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

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

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

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

[ редактировать ]

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

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

Цитировать:

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

См. также

[ редактировать ]

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

[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a5021d43feb21b78aa471be7b86124c1__1697630880
URL1:https://arc.ask3.ru/arc/aa/a5/c1/a5021d43feb21b78aa471be7b86124c1.html
Заголовок, (Title) документа по адресу, URL1:
StAX - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)