Содержание
- 2. План лекции Общие принципы Document type definition SAX и DOM Работа с SAX и DOM в
- 3. У истоков Standard Generalized Markup Language (SGML) Предназначался для описания структуры сложных документов Был разработан в
- 4. Наследники Hypertext Markup Language (HTML) Язык разметки гипертекста (описание представления Web-страницы) Extensible Markup Language (XML) Язык
- 5. Отличия XML от HTML XML чувствителен к регистру В XML нужно закрывать тэги В XML часто
- 6. Пример XML Helvetica 36 Times Roman 12 400 200 0 50 100 Times Roman Helvetica
- 7. Структура XML-документа Заголовок Объявления типа документа Корневой элемент //DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
- 8. Структура XML-документа Смешанное наполнение не рекомендуется Существуют атрибуты Helvetica 36 Helvetica 36
- 9. Некоторые инструкции Символы Стандартные символы Инструкции обработки Комментарии é, ™ < > & " '
- 10. Правильный документ Начинается с объявления Содержит один уникальный корневой элемент Все открытые теги закрываются Учтена чувствительность
- 11. Document Type Definition (DTD) Содержит правила, описывающие структуру документа Транслятор может автоматически проверять документ на соответствие
- 12. Регулярные выражения
- 13. Примеры выражений Описание меню Описание шрифта Описание главы в книге (intro,(heading,(para|image|table|note)+)+)>
- 14. Описание атрибутов: типы
- 15. Описание атрибутов: значения
- 16. Примеры выражений |SOUTHEAST|SOUTH|SOUTHWEST|WEST|NORTHWEST) "CENTER">
- 17. XML Schema Предназначена для того же, что и DTD Для описания правил используется непосредственно XML Имеет
- 18. Поддержка типов данных Проще описывать допустимое содержимое документа Проще проверять корректность данных Проще накладывать ограничения на
- 19. XML Schema описывается на XML Не требуется изучение еще одного языка Вы можете использовать свой любимый
- 20. Документ и тип DTD Tove Jani Reminder Don't forget me this weekend!
- 21. XML Schema для документа targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified">
- 22. Указание типа документа xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd">
- 23. Extensible Stylesheet Language (XSL) Комплекс технологий, связанных с преобразованием и представлением XML-документов Обычно используется для преобразования
- 24. XPath Вспомогательный язык, позволяющий обращаться к элементам документа Имя элемента представляется в виде пути /bookstore/book/title Обращение
- 25. Примеры выражений XPath
- 26. Принципы XSL Контекстно-зависимый язык Основные элементы – выводимый текст и шаблоны Текст просто выводится Шаблоны описывают
- 27. Пример XML (catalog.xml) Empire Burlesque Bob Dylan USA Columbia 10.90 1985 Hide your heart Bonnie Tyler
- 28. Пример XSL (tranformation.xsl) My CD Collection Title Artist
- 29. Результат трансформации
- 30. Обработка XML Два подхода Simple API for XML (SAX) Порождает события в процессе чтения XML документа
- 31. Логика SAX
- 32. Логика DOM
- 33. Особенности SAX и DOM
- 34. Работа с XML в Java Стандартные интерфейсы В оригинале описаны на Interface Definition Language (OMG IDL)
- 35. Работа с SAX Обработку документа производит транслятор, передающий информацию зарегистрировавшимся обработчикам событий Обработчики должны реализовывать интерфейсы
- 36. Пакет javax.xml.parsers Класс SAXParserFactory Образец проектирования Singleton, позволяет настроить и получить экземпляр фабрики для производства SAXParser
- 37. Семантика документа Возникающие события startElement / endElement Открывающий и закрывающий тэг characters Символы startDocument / endDocument
- 38. Создание обработчика событий Реализация нужного интерфейса, настройка на него используемого транслятора Использование класса org.xml.sax.helpers.DefaultHandler или org.xml.sax.helpers.DefaultHandler2
- 39. Пример. Файл XML Tom King Boss 100500 Ben Gum Bubble 100000
- 40. Пример. Часть 1 import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class ReadXMLFile
- 41. Пример. Часть 2 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
- 42. Пример. Часть 3 ... public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println("End
- 43. Пример. Часть 4 ... if (bnname) { System.out.println("Nick Name: " + new String(ch, start, length)); bnname
- 44. Пример. Результат Start Element: company Start Element: staff Start Element: firstname First Name: Tom End Element:
- 45. Работа с DOM Считывание документа, опять же, реализует транслятор Результат считывания возвращается в виде дерева объектов,
- 46. Пакет org.w3c.dom Базовый интерфейс Node, содержит основные методы работы с узлом От него наследуют специфические интерфейсы
- 47. Пакет javax.xml.parsers Класс DocumentBuilderFactory Образец проектирования Singleton, позволяет настроить и получить экземпляр фабрики для производства DocumentBuilder
- 48. Пример. Файл XML Tom King Boss 100500 Ben Gum Bubble 100000
- 49. Пример. Часть 1 import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.*; public class ReadXMLFile_DOM { public static void
- 50. Пример. Часть 2 ... for (int temp = 0; temp Node nNode = nList.item(temp); System.out.println("\nCurrent Element
- 51. Пример. Часть 3 System.out.println("Last Name : " + eElement .getElementsByTagName("lastname") .item(0).getTextContent()); System.out.println("Nick Name : " +
- 52. Пример. Результат Root element : company ---------------------------- Current Element : staff Staff id : 1001 First
- 53. Запись XML Средствами пакета javax.xml.transform Средствами API третьих фирм JDOM (www.jdom.org) Тот же DOM, но реализованный
- 54. Пример. Часть 1 import org.w3c.dom.*; import org.xml.sax.SAXException; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import
- 55. Пример. Часть 2 ... TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(/* !!!! */); // Вспомогательные
- 56. Пример. Часть 3 ... // Прочие настройки преобразователя transformer.transform (dom_source, out_stream); } catch (ParserConfigurationException e) {
- 57. Настройка преобразователя Метод создания объекта преобразователя TransformerFactory.newTransformer() имеет 2 формы: без аргументов – будет создаваться «копия»
- 58. Пример XSL-преобразования import java.io.*; import java.net.URISyntaxException; import javax.xml.transform.*; import javax.xml.transform.stream.*; public class XSLTWriterDOM { public static
- 59. Размышления на тему Итак, что мы научились делать: Считывать информацию из XML-документов SAX DOM Записывать информацию
- 60. Шаг 1. Сохранение JavaBeans В версии JavaSE 1.4 для объектов JavaBeans появились механизмы, сходные с сериализацией
- 61. Пример. Часть 1 XMLEncoder e = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("Test.xml"))); e.writeObject(new JButton("Hello, world")); e.close();
- 62. Пример. Часть 2 Hello true
- 63. Шаг 2. Java Architecture for XML Binding (JAXB) В версии JavaSE 1.5 появились новые механизмы JAXB
- 64. Пример. RootClass import javax.xml.bind.annotation.*; @XmlRootElement public class RootClass { private int value; @XmlElement private NodeClass name
- 65. Пример. NodeClass (1) public class NodeClass { private String innerValue = ""; private double rval =
- 66. Пример. WriterJAXB import javax.xml.bind.*; import java.io.*; public class WriterJAXB { public static void main(String[] args){ try
- 67. Содержимое файла после выполнения (1) Что сохранено: значение name, помеченное аннотацией значение innerValue, не помеченное аннотацией
- 68. Пример. NodeClass (2) import javax.xml.bind.annotation.*; public class NodeClass { private String innerValue = ""; @XmlElement private
- 69. Содержимое файла после выполнения (2) Сохранились элементы, являющиеся свойствами JavaBeans Сохранились элементы, помеченные аннотациями 0.9878295088863659 ABC
- 70. Пакет javax.xml.bind.annotation Содержит разнообразнейшие аннотации, описывающие параметры маршалинга и анмаршалинга @XmlRootElement Обозначает корневой элемент сохраняемой структуры
- 71. Пример. ReaderJAXB import javax.xml.bind.*; import java.io.*; public class ReaderJAXB { public static void main(String[] args) {
- 72. Спасибо за внимание!
- 74. Скачать презентацию