Java API для обработки XML
Java API для обработки XML , или JAXP , является одним из Java - XML - API - интерфейсы . Это легкий стандартизированный API для проверки , анализа , генерации и преобразования XML-документов. Соответствующая (нестандартная) реализация API является взаимозаменяемой (подключаемой). Четыре основных интерфейса :
- Объектная модель документа интерфейс анализатора или DOM - интерфейс
- Простой API для XML - интерфейса парсера или SAX интерфейса
- Потоковый интерфейс для XML или StAX интерфейс (добавлен в JDK 6, поставляется отдельно , как Jar для JDK 5)
- XSLT - интерфейс для того, чтобы его преобразования данных и структуры документа XML.
J2SE 1.4 JDK был первой версией JDK, которая была опубликована с реализацией JAXP 1.1; текущий JSE поставляется с Apache Xerces и адаптированным вариантом Xalan (для XSLT).
Управление версиями
| Версия Java SE | включена версия JAXP |
|---|---|
| 1.4 | 1.1 |
| 1.5 | 1.3 |
| 1.6 | 1.4 |
| 1.7.0 | 1.4.5 |
| 1.7.40 | 1.5 |
| 1,8 | 1.6 |
DOM интерфейс
Интерфейс DOM имеет очень простую структуру. Он анализирует весь XML-документ и создает полное представление документа «в памяти». Он использует классы и концепции спецификации, которые можно просмотреть в разделе Базовая спецификация уровня 2 объектной модели документа (DOM).
Парсер DOM называется DocumentBuilder, потому что он обеспечивает представление документа в памяти. Экземпляр класса javax.xml.parsers.DocumentBuilder создается классом Factory javax.xml.parsers.DocumentBuilderFactory . DocumentBuilder сначала создает экземпляр org.w3c.dom.Document в форме древовидной структуры, которая содержит узлы в XML-документе. Каждый узел дерева в этой структуре реализует интерфейс org.w3c.dom.Node . Существует множество различных типов узлов дерева, которые представляют соответствующие типы данных из XML-документа.
Наиболее важные узлы:
- Узлы элементов, возможно, с атрибутами
- Текстовые узлы, отражающие текст, находящийся между начальным и конечным тегами элемента документа.
Полный список типов узлов см. В документации javadoc пакета org.w3c.dom .
С DOM-API вы можете работать «в обоих направлениях», то есть от XML к DOM «в памяти», а также от DOM к XML. Поэтому он подходит не только для «синтаксического анализа» XML, но и для генерации XML (потоков или файлов).
SAX интерфейс
Парсер SAX, также называемый SAXParser, создается javax.xml.parsers.SAXParserFactory . В отличие от парсера DOM, SAXParser не создает представление XML-документа «в памяти», что, следовательно, делает его более быстрым и менее требовательным с точки зрения потребления памяти. Напротив, SAXParser информирует клиента о структуре XML-документа через функции обратного вызова , т.е. Другими словами, выполняются доступные парсеру методы экземпляра DefaultHandler.
Класс DefaultHandler находится в пакете org.xml.sax.helpers . Это реализует ContentHandler, ErrorHandler, DTDHandler и интерфейс EntityResolver. Большинство клиентов интересуются методами интерфейса ContentHandler.
Методы ContentHandler, реализованные DefaultHandler, вызываются, как только синтаксический анализатор SAX встречает соответствующие элементы XML-документа. Основные методы в этом интерфейсе:
- в StartDocument () и EndDocument () метода, которые называются по начальным и конечным тегам документа XML.
- в StartElement () и EndElement () метода, которые называются по начальным и конечным тегам документа элемента .
- метод characters () . Это вызывается с содержимым между начальным и конечным тегами соответствующего элемента XML-документа.
Клиент предлагает подкласс DefaultHandler , который перезаписывает эти методы и обрабатывает данные. Это также может включать хранение данных в базе данных или запись в поток .
С SAX-API вы можете работать «только в одном направлении», а именно из XML в Java. Поэтому он подходит только для «синтаксического анализа» XML. С SAX вы не можете создавать XML (потоки или файлы).
XMLPULL интерфейс
Streaming API для XML (StAX) был частью JAXP начиная с JAXP 1.2 и, следовательно, JSE 6 и J2EE 1.4 . Это используется для чтения данных XML с помощью так называемого синтаксического анализатора XMLPULL. XMLPULL похож на SAX, за исключением того, что синтаксический анализатор не отправляет информацию в приложение через механизм событий ( «PUSH» ), как в случае с SAX , но приложение получает следующую информацию само, когда ему это нужно (« PULL » ). Парсеры XMLPULL обычно более эффективны, чем парсеры SAX.
XSLT-интерфейс
Е х tensible S tylesheet L anguage для T ransformations, сокращенно XSLT , преобразование позволяет документ XML к другим формам данных.
Проверка XSD
Проверка файлов XSD поддерживается начиная с JAXP 1.2. JAXP 1.2 является частью платформы Java из JSE 6.0 и J2EE 1.4.
Индивидуальные доказательства
- ↑ https://www.jcp.org/en/jsr/detail?id=206
- ↑ http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113
веб ссылки
- Описание продукта Oracle JAXP
- Пример программы с использованием парсера DOM и парсера SAX Учебное пособие: XML с Xerces для Java