1 Java 16. XML&JAVA. 2 JAXB. Маршализация и демаршализация Начиная с версии Java 6, механизмы взаимодействия с XML (сохранение/извлечение данных) включены.

Презентация:



Advertisements
Похожие презентации
Программный доступ к XML DOM, SAX,.NET среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря.
Advertisements

WEB- ТЕХНОЛОГИИ Лекция 4. Задача преобразования XML- данных 1 Задача преобразования Для передачи данных между разными приложениями необходимо преобразовать.
Java Advanced XML Transformations 1.0 (XSLT 1.0).
SAX Simple API for XML Презентацию подготовила Иванова Анна, гр. 950б.
XML- технологии Лекция 6 Технология DOM. DOM DOM Document Object Model объектная модель документа, стандартизованная консорциумом W3C DOM программный.
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
Современные языки и технологии программирования Использование XML.
Реализация концепции построения и формирования отраслевой системы государственного учета, регистрации и мониторинга (ОСГУРМ) информационных ресурсов сферы.
XML eXtensible Markup Language 1.Пространства имён (Namespaces) 2.Язык навигации внутри XML-документа (XPath)
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Лекция 11 Листы стилей XML Язык XSL позволяет преобразовывать XML- документы в документы других типов, а также задает порядок их форматирования. Принципы.
Типовые расчёты Растворы
Вопрос 1 Какой объект находится на верхнем уровне иерархии в операционной системе Windows?. ОТВЕТ: Рабочий стол.
1 Диаграммы реализации (implementation diagrams).
БАЗЫ ДАННЫХ ЛЕКЦИЯ 14. тема: XML-ТЕХНОЛОГИИ В БАЗАХ ДАННЫХ.
Школьная форма Презентация для родительского собрания.
Powerpoint Templates Page 1 Язык разметки гипертекста HTML.
Язык запросов XML. XML (Extensible Markup Language) - это новый SGML-производный язык разметки документов, позволяющий структурировать информацию разного.
Г. Москва, тел.: +7 (495) , Internet: Слайды курса «Администрирование работы на сервере.
XSLT-ТРАНСФОРМАЦИЯ XML- ТЕХНОЛОГИИ Лекция 4. Трансформация XML- данных Категории трансформации Структурные трансформации – трансформация одного словаря.
Транксрипт:

1 Java 16. XML&JAVA

2 JAXB. Маршализация и демаршализация Начиная с версии Java 6, механизмы взаимодействия с XML (сохранение/извлечение данных) включены в JDK. Маршаллизация – механизм преобразования данных из java- объектов в конкретное хранилище (xml, txt, …) Демаршаллизация – обратный процесс преобразования данных из внешних источников в структуру хранения, поддерживаемую JVM. Проблема – взаимно однозначное соответствие информации в источнике и приемнике. example02 : MarshalMain.java UnMarshalMain.java

3 JAXB. Генерация классов Возможно создание классов Java на основе XML-схемы. example01: students.xsd XJC is included in the bin directory in the JDK starting with Java SE 6. Запуск процесса генерации осуществляется с помощью командной строки: xjc.exe students.xsd В результате будет сгенерирован пакет com.example.students Содержащий классы-сущности, соответствующие схеме.

4 XML-анализаторы Парсер – это библиотека (в языке Java: класс), которая читает XML-документ, а затем предоставляет набор методов для обработки информации этого документа Валидирующие и невалидирующие анализаторы И те, и другие проверяют XML-документ на соответствие синтаксическим правилам. Но только валидирующие анализаторы знают, как проверить XML- документ на соответствие структуре, описанной в XSD или DTD.

5 Древовидная и событийная модели Существует три подхода (API) к обработке XML-документов: DOM (Document Object Model) SAX (Simple API for XML) StAX (Streaming API for XML) DOM-анализаторы строят древовидную модель. SAX-анализаторы генерируют события. StAX-анализаторы ждут команды от приложения для перехода к следующему элементу XML.

6 DOM DOM (Document Object Model) - платформенно-независимый программный интерфейс, позволяющий программам и скриптам управлять содержимым документов HTML и XML, а также изменять их структуру и оформление. Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого содержит: элемент, атрибут, текстовый, графический или любой другой объект. Узлы связаны между собой отношениями родитель-потомок.

7 SAX, StAX SAX (Simple API for XML) базируется на модели последовательной одноразовой обработки и не создает внутренних деревьев. При прохождении по XML вызывает соответствующие методы у классов, реализующих интерфейсы, предоставляемые SAX- парсером. StAX (Streaming API for XML) не создает дерево объектов в памяти, но, в отличие от SAX-парсера, за переход от одной вершины XML к другой отвечает приложение, которое запускает разбор документа.

8 Использование анализаторов DOM-анализаторы следует использовать тогда, когда нужно знать структуру документа и может понадобиться изменять эту структуру либо использовать информацию из XML-файла несколько раз. SAX/StAX-анализаторы используются тогда, когда нужно извлечь информацию о нескольких элементах из XML-файла либо когда информация из документа нужна только один раз.

9 Чтение XML SAX-анализатором 1. Создать класс, который реализует один или несколько интерфейсов (ContentHandler, ErrorHandler, DTDHandler, EntityResolver) и реализовать методы, отвечающие за обработку интересующих событий. 2. Используя SAX2 API, поддерживаемое всеми SAX парсерами, создать org.xml.sax.XMLReader 3. Передать в XMLReader объект класса, созданного на шаге 1 с помощью соответствующих методов: setContentHandler() setErrorHandler() setDTDHandler() setEntityResolver() 4. Вызвать метод parse(), которому в качестве параметров передать путь (URI) к анализируемому документу либо InputSource. example03: чтение и вывод XML-документа : SimpleHandler.java создание и запуск парсера : SAXSimple.java

10 StAX StAX (Streaming API for XML) включен в JDK, начиная с версии Java SE 6. Он похож на SAX отсутствием объектной модели в памяти и последовательным продвижением по XML В StAX не требуется реализация интерфейсов, и приложение само командует StAX-парсеру перейти к следующему элементу XML. В отличие от SAX, данный парсер предлагает API для создания XML-документа.

11 Основные классы StAX XMLInputFactory XMLStreamReader XMLOutputFactory XMLStreamWriter Используются для чтения и создания XML-документа

12 Чтение XML StAX-анализатором Для чтения XML надо получить ссылку на XMLStreamReader : После чего XMLStreamReader можно применять аналогично интерфейсу Iterator, используя методы hasNext() и next(): boolean hasNext() – показывает, есть ли еще элементы int next() – переходит к следующей вершине XML, возвращая ее тип StringReader stringReader = new StringReader(xmlString); XMLInputFactory inputFactory = XMLInputFactory.newInstance(); XMLStreamReader reader = inputFactory.createXMLStreamReader(stringReader);

13 Возможные типы вершин XMLStreamConstants.START_DOCUMENT XMLStreamConstants.END_DOCUMENT XMLStreamConstants.START_ELEMENT XMLStreamConstants.END_ELEMENT XMLStreamConstants.CHARACTERS XMLStreamConstants.ATTRIBUTE XMLStreamConstants.CDATA XMLStreamConstants.NAMESPACE XMLStreamConstants.COMMENT XMLStreamConstants.ENTITY_DECLARATION

14 Извлечение данных Данные извлекаются применением методов String getLocalName() возвращает название тега String getAttributeValue(NAMESPACE_URI, ATTRIBUTE_NAME) возвращает значение атрибута String getText() возвращает текст тега example03.stax: реализация разбора XML-документа StAX

15 Древовидная модель Анализатор DOM представляет собой некоторый общий интерфейс для работы со структурой документа. DOM строит дерево, которое представляет содержимое XML- документа, и определяет набор классов, которые представляют каждый элемент в XML-документе (элементы, атрибуты, сущности, текст и т.д.). В пакете org.w3c.dom можно найти интерфейсы, которые представляют вышеуказанные объекты. Реализацией этих интерфейсов занимаются разработчики анализаторов. Разработчики приложений, которые хотят использовать DOM- анализатор, имеют готовый набор методов для манипуляции деревом объектов и не зависят от конкретной реализации используемого анализатора.

16 общепризнанные DOM-анализаторы и библиотеки Анализаторы: Xerces – JAXP – входит в JDK. Библиотеки, предлагающие свои структуры объектов XML с API для доступа к ним: JDOM – dom4j –

17 Xerces Одна из библиотек стороннего производителя (apache) Особенность - использование части стандартных возможностей XML-библиотек JSDK с добавлением собственных классов и методов, упрощающих и облегчающих обработку документов XML

18 org.w3c.dom.Document Используется для получения информации о документе и изменения его структуры. Этот интерфейс представляет собой корневой элемент XML- документа и содержит методы доступа ко всему содержимому документа. Element getDocumentElement() возвращает корневой элемент документа.

19 org.w3c.dom.Node Основным объектом DOM является Node – некоторый общий элемент дерева. Большинство DOM-объектов унаследовано от Node. Для представления элементов, атрибутов, сущностей разработаны свои специализации Node. Наследники интерфейса Node : Element - предназначен для работы с содержимым элементов XML-документа Attr - служит для работы с атрибутами элемента XML-документа Text - интерфейс необходим для работы с текстом, содержащимся в элементе XML-документа

20 org.w3c.dom.Node методы интерфейса short getNodeType() возвращает тип объекта (элемент, атрибут, текст, CDATA и т.д.) String getNodeValue() возвращает значение Node Node getParentNode() возвращает объект, являющийся родителем текущего узла Node NodeList getChildNodes() возвращает список объектов, являющихся дочерними элементами Node getFirstChild() Node getLastChild() возвращает первый и последний дочерние элементы NamedNodeMap getAttributes() возвращает список атрибутов данного элемента

21 org.w3c.dom.Element String getTagName(String name) возвращает имя элемента boolean hasAttribute() проверяет наличие атрибутов String getAttribute(String name) возвращает значение атрибута по его имени Attr getAttributeNode(String name) возвращает атрибут по его имени void setAttribute(String name, String value) устанавливает значение атрибута, если необходимо, атрибут создается void removeAttribute(String name) удаляет атрибут NodeList getElementsByTagName(String name) возвращает список дочерних элементов с определенным именем

22 org.w3c.dom.Attr String getName() возвращает имя атрибута Element getOwnerElement() возвращает элемент, который содержит этот атрибут String getValue() возвращает значение атрибута void setValue(String value) устанавливает значение атрибута boolean isId() проверяет атрибут на тип ID

23 org.w3c.dom.Text String getWholeText() возвращает текст, содержащийся в элементе void replaceWholeText(String content) заменяет строкой content весь текст элемента example04: создание анализатора и загрузка XML-документа создание объектов на основе объекта типа Element

24 JDOM JDOM не является анализатором. JDOM представляет свою модель, отличную от DOM. Для разбора документа JDOM использует либо SAX-, либо DOM- парсеры сторонних производителей. Реализаций JDOM немного, так как он основан на классах, а не на интерфейсах. Разбирать XML-документы с помощью JDOM проще, чем с помощью Xerces. Иерархия наследования объектов документа похожа на Xerces: В корне иерархии наследования стоит класс Content, от которого унаследованы остальные классы (Text, Element и др.).

25 Класс Content Document getDocument() возвращает объект, в котором содержится этот элемент Element getParentElement() возвращает родительский элемент

26 Класс Document Базовый объект, в который загружается после разбора XML- документ. Аналогичен Document из Xerces. Element getRootElement() возвращает корневой элемент.

27 Интерфейс Parent Интерфейс Parent реализуют классы Document и Element. Он содержит методы для работы с дочерними элементами. Интерфейс Parent и класс Content реализуют ту же функциональность, что и интерфейс Node в Xerces.

28 методы Parent List getContent() возвращает все дочерние объекты Content getContent(int index) возвращает дочерний элемент по его индексу int getContentSize() возвращает количество дочерних элементов Parent getParent() возвращает родителя этого родителя int indexOf(Content child) возвращает индекс дочернего элемента

29 Класс Element Класс Element представляет собой элемент XML-документа. Attribute getAttribute(String name) возвращает атрибут по егоимени String getAttributeValue(String name) возвращает значение атрибута по его имени List getAttributes() возвращает список всех атрибутов Element getChild(String name) возвращает дочерний элемент по имени List getChildren() возвращает список всех дочерних элементов String getChildText(String name) возвращает текст дочернего элемента String getName() возвращает имя элемента String getText() возвращает текст, содержащийся в элементе

30 Класс Text Класс Text содержит методы для работы с текстом String getText() возвращает значение содержимого в виде строки String getTextTrim() возвращает значение содержимого без крайних пробельных символов

31 Класс Attribute Класс Attribute представляет собой атрибут элемента XML- документа. В отличие от интерфейса Attr из Xerces, у класса Attribute расширенная функциональность. Класс Attribute имеет методы для возвращения значения определенного типа int getAttributeType() возвращает тип атрибута тип getТипType() (Int, Double, Boolean, Float, Long) возвращает значение определенного типа String getName() возвращает имя атрибута Element getParent() возвращает родительский элемент example05: создание объектов с использованием JDOM: JDOMAnalyzer.java запуск JDOM : JDOMStudentMain.java

32 Создание и запись XML-документов (JDOM) Для создания документа необходимо создать объект каждого класса: Element Attribute Document Text и др. и присоединить его к объекту дерева XML-документа (как child).

33 Element Element addContent(Content child) Element addContent(int index, Content child) добавляет дочерний элемент Element addContent(String str) добавляет текст в содержимое элемента Element setAttribute(Attribute attribute) Element setAttribute(String name, String value) устанавливает значение атрибута Element setContent(Content child) заменяет содержимое этого элемента на элемент, переданный в качестве параметра Element setContent(int index, Content child) заменяет дочерний элемент на определенной позиции элементом, переданным как параметр Element setName(String name) устанавливает имя элемента Element setText(String text) устанавливает текст содержимого элемента

34 Text void append(String str) добавляет текст к уже имеющемуся void append(Text text) добавляет текст из другого объекта Text, переданного в качестве параметра Text setText(String str) устанавливает текст содержимого элемента

35 Attribute Attribute setAttributeType(int type) устанавливает тип атрибута Attribute setName(String name) устанавливает имя атрибута Attribute setValue(String value) устанавливает значение атрибута example06: создание и запись документа с помощью JDOM: JDOMLogic.java создание списка и запуск приложения : JDOMMainSaver.java

36 Таблицы стилей Документ XML используется для представления информации в виде некоторой структуры, но он никоим образом не указывает, как его отображать. Инструкции форматирования XML-документов формируются в так называемые таблицы стилей, и для просмотра документа нужно обработать XML-файл согласно этим инструкциям. Существует два стандарта стилевых таблиц, опубликованных W3C. CSS (Cascading Stylesheet) XSL (XML Stylesheet Language)

37 Таблицы стилей CSS Изначально разрабатывался для HTML и представляет из себя набор инструкций, которые указывают браузеру, какой шрифт, размер, цвет использовать для отображения элементов HTML- документа.

38 Таблицы стилей XSL XSL используется для преобразования XML-документа перед отображением. Используя XSL, можно, например, построить оглавление для XML- документа, представляющего книгу. XSL можно разделить на три части: XSLT (XSL Transformation) XPath XSLFO (XSL Formatting Objects) XSL Processor необходим для преобразования XML-документа согласно инструкциям, находящимся в файле таблицы стилей.

39 XSLT XSLT можно использовать для: удаления существующих или добавления новых элементов в XML-документ; создания нового XML-документа на основании заданного; извлечения информации из XML-документа с разной степенью детализации; преобразования XML-документа в документ HTML или документ другого типа.

40 Ключевые моменты 1 Начиная с Java 6 в JDK включены механизмы взаимодействия с XML (маршаллизация/демаршаллизация). Начиная с Java 6 в JDK включен механизм генерации классов на основе xsd схемы Существуют валидирующие и невалидирующие анализаторы. Три подхода (API) к обработке XML-документов (DOM,SAX, StAX) DOM (Document Object Model) - платформенно-независимый программный интерфейс, позволяющий программам и скриптам управлять содержимым документов HTML и XML, а также изменять их структуру и оформление. Реализации строят древовидную модель в памяти. SAX (Simple API for XML) базируется на модели последовательной одноразовой обработки. При прохождении по XML генерирует квазисобытия. StAX (Streaming API for XML) базируется на модели последовательной одноразовой обработки, за переход от одной вершины XML к другой отвечает приложение, которое запускает разбор документа.

41 Ключевые моменты 2 DOM -анализаторы следует использовать тогда, когда нужно знать структуру документа и может понадобиться изменять эту структуру либо использовать информацию из XML-файла несколько раз. SAX/StAX -анализаторы используются тогда, когда нужно извлечь информацию о нескольких элементах из XML-файла либо когда информация из документа нужна только один раз. Инструкции форматирования XML-документов формируются в так называемые таблицы стилей Два стандарта стилевых таблиц, опубликованных W3C: CSS (Cascading Stylesheet) XSL (XML Stylesheet Language) XSL можно разделить на три части: XSLT (XSL Transformation) XPath, XSLFO (XSL Formatting Objects)