WikiDer > 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 (порядок ориентирован на начальную дату введения):
- Объектная модель документа (DOM), первая стандартизированная, независимая от языка / платформы древовидная модель обработки XML; альтернативные модели дерева Java включают JDOM, Dom4j, и XOM
- Простой API для XML (SAX), стандартный XML push API
- API привязки Java XML (JAXB), работает поверх другого парсера (обычно потокового парсера), связывает содержащиеся данные с / от объектов Java.
- Потоковая передача XML
- XQuery API для Java
внешняя ссылка
- Введение в StAX XML.com, Гарольд, Эллиотт Расти
- Java Streaming API для XML (Stax) - Учебное пособие
- XMLPull Patterns Статья Александра Сломинского о шаблонах проектирования XML Pull (и StAX).
- StAX Parser - API курсора и итератора Статья HowToDoInJava об API курсора и итератора.