Java Advanced Введение в XML
2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Введение в XML Содержание 1.XML 2.Пространства имен 3.SAX 4.DOM 5.Заключение
XML Часть 1
4Georgiy KorneevJava Advanced / Введение в XML eXtensible Markup Language XML – текстовый язык хранения структурированных данных Предшественники XML Standard Generalized Markup Language (SGML) Hyper Text Markup Language (HTML)
5Georgiy KorneevJava Advanced / Введение в XML Составляющие XML-документа Элементы (element) – задают структуру элемента Атрибуты (attribute) – дополняют информацию об элементе Символьные данные (character data) – текст внутри элемента Указания по обработке (processing instruction) – применяются разборщиками и другими программами Комментарии (comment) – игнорируются
6Georgiy KorneevJava Advanced / Введение в XML Элемент Структура Имя Дети Атрибуты Синтаксис Дети Сокращенный
7Georgiy KorneevJava Advanced / Введение в XML Атрибут Структура Имя Значение Синтаксис имя = "значение" или имя = 'значение'
8Georgiy KorneevJava Advanced / Введение в XML Пример: элементы и атрибуты Описание книги
9Georgiy KorneevJava Advanced / Введение в XML XML-идентификаторы Первый символ Буква, _ или : Последующие символы Первый символ, цифра, - или. Примеры hello HelloWorld HelloWorld156Times hello-world hello.world
10Georgiy KorneevJava Advanced / Введение в XML Символьные данные Простые символы Пример: Привет! Именованные ссылки &название; Пример: Пусть a < b и b < c, тогда a < c Указание кода символа &#НомерСимвола; &#xШестнадцатеричныйНомерСимвола; Пример: A A
11Georgiy KorneevJava Advanced / Введение в XML Именованные ссылки Значения по умолчанию &&ersand <greater than &qout;"quotes ''apostrophe
12Georgiy KorneevJava Advanced / Введение в XML Пробелы и переводы строк Пробельные символы #x20 Пробел #x9Табуляция #xAПеревод строки Переводы строки #xDвозврат каретки #x85перевод строки (IBM) #x2028перевод строки (Unicode) #xD #xAперевод строки (DOS) #xD #x85
13Georgiy KorneevJava Advanced / Введение в XML Блоки символьных данных Синтаксис Примеры ' "]]> ]]>
14Georgiy KorneevJava Advanced / Введение в XML Указания по обработке Структура Имя Значение Синтаксис
15Georgiy KorneevJava Advanced / Введение в XML Заголовок XML-файла Синтаксис Примеры Версия 1.1, кодировка 1251 (Windows Russian) Версия 1.0, кодировка 866 (DOS Russian) Версия 1.0, кодировка – автоопределение (UTF-8, UTF-16)
16Georgiy KorneevJava Advanced / Введение в XML Комментарии Синтаксис Примеры
17Georgiy KorneevJava Advanced / Введение в XML XML-документ Пролог Заголовок Тип документа Комментарии и указания Элемент Эпилог Комментарии и указания
Пространства имен Часть 2
19Georgiy KorneevJava Advanced / Введение в XML Пространства имен Позволяют одновременно использовать одинаковые имена, придуманные разными людьми Пространство имен идентифицируется URI
20Georgiy KorneevJava Advanced / Введение в XML Указание пространства имен Структура Полное имя (qualified name) Пространство имен (namespace) Локальное имя (local name) Префикс (prefix) Имя имеет вид префикс:локальноеИмя Пространства имен связываются с префиксами с помощью атрибутов вида xmlns:префикс = "пространство имен"
21Georgiy KorneevJava Advanced / Введение в XML Пример: пространства имен Описание книги …
22Georgiy KorneevJava Advanced / Введение в XML Область действия префикса От элемента для которого определено отображение префикса в низ по дереву, до элементов для которых указано новое отображение этих префиксов Действие префикса можно отменить, указав отображение на пустую строку
23Georgiy KorneevJava Advanced / Введение в XML Пространство имен по умолчанию Применяется для элементов для которых не указано пространство имен Объявление xmlns="пространство имен"
24Georgiy KorneevJava Advanced / Введение в XML Пример: пространства имен по умолчанию Описание книги
SAX Часть 3
26Georgiy KorneevJava Advanced / Введение в XML Simple API for XML Представляет XML-документ в виде последовательности событий Пакеты org.xml.sax – модель SAX java.xml.parsers – разборщики
27Georgiy KorneevJava Advanced / Введение в XML Разбор XML Интерфейс XMLReader Методы parse(InputSource) – разобрать XML-документ setContentHandler(ContentHandler) – устанавливает приемник событий setErrorHandler(ErrorHandler) – установить обработчик ошибок setFeature(name, value) – установить настройку setProperty(name, value) – установить свойство
28Georgiy KorneevJava Advanced / Введение в XML Источники данных Класс InputSource Конструкторы InputSource(InputStream) – из байтового потока InputSource(Reader) – из символьного потока InputSource(systemId) – по URL
29Georgiy KorneevJava Advanced / Введение в XML Обработчик событий (1) Интерфейс ContentHandler Класс DefaultHandler Методы setDocumentLocator(Locator locator) – установить источник местоположения startDocument() – начало документа endDocument() – конец документа startElement(ns, localName, qName, Attributes) – открывающий тег элемента endElement(ns, localName, qName) – закрывающий тег элемента
30Georgiy KorneevJava Advanced / Введение в XML Обработчик событий (2) Методы characters(char[] ch, offset, len) – последовательность символов ignorableWhitespace(char[] ch, offset, len) – последовательность пробельных символов processingInstruction(prefix, data) – рекомендация по обработке startPrefixMapping(prefix, uri) – начало области использование префикса endPrefixMapping(prefix, uri) – окончание области использование префикса
31Georgiy KorneevJava Advanced / Введение в XML Атрибуты Интерфейс Attributes Методы getLength() – количество атрибутов getLocalName(index) – локальное имя getQName(index) – полное имя getURI(index) – пространство имен getValue(index) – получить значение по индексу getValue(qName) – получить значение по полному имени getValue(ns, localName) – получить значение по пространству имен и локальному имени
32Georgiy KorneevJava Advanced / Введение в XML Информация о местоположении Интерфейс Locator Методы getLineNumber() – номер строки getColumnNumber() – номер столбца getSystemId() – URL разбираемого файла
33Georgiy KorneevJava Advanced / Введение в XML Обработка ошибок Интерфейс ErrorHandler Методы error(SAXParseException) – сообщение об исправимой ошибке fatalError(SAXParseException) – сообщение о неисправимой ошибке warning(SAXParseException) – сообщение о предупреждении
34Georgiy KorneevJava Advanced / Введение в XML Исключения Класс SAXException Методы getLineNumber() – номер строки getColumnNumber() – номер столбца getSystemId() – URL разбираемого файла
35Georgiy KorneevJava Advanced / Введение в XML Создание SAXParser Класс SAXParserFactory Методы static newInstance() – создать фабрику newSAXParser() – создать разборщик setFeature(uri, value) – установить настройку setNamespaceAware(value) – установить поддержку пространств имен Класс SAXParser implements XMLReader
DOM Часть 4
37Georgiy KorneevJava Advanced / Введение в XML Document Object Model Представляет XML-документ в виде дерева узлов Пакеты org.w3c.dom – модель DOM java.xml.parsers – разборщики
38Georgiy KorneevJava Advanced / Введение в XML Узел (1) Интерфейс Node Структура узла getLocalName() – локальное имя getNamespaceURI() – пространство имен getPrefix() – префикс getNodeName() – имя узла getNodeValue() – значение узла getNodeType() – тип узла
39Georgiy KorneevJava Advanced / Введение в XML Типы узлов ИнтерфейсОписаниеИмяЗначение AttrАтрибутИмяЗначение CDATASectionБлок символов#cdata-sectionСодержание CommentКомментарий#commentСодержание DocumentДокумент#document ElementЭлементИмя ProcessingInst ruction Рекомендация по обработке ИмяЗначение TextТекст#textСодержание
40Georgiy KorneevJava Advanced / Введение в XML Навигация по узлам Интерфейс Node Структура узла getNextSibling() – предыдущий брат getPreviousSibling() – следующий брат getFirstChild() – первый ребенок getLastChild() – последний ребенок getParentNode() – родитель
41Georgiy KorneevJava Advanced / Введение в XML Атрибуты Интерфейс NamedNodeMap Методы getLength() – количество элементов item(index) – элемент по индексу getNamedItem(name) – элемент по имени getNamesItemNS(namespace, localName) – элемент по имени и пространству имен Методы интерфейса Node getAttributes() – получить атрибуты hasAttributes() – проверить наличие атрибутов
42Georgiy KorneevJava Advanced / Введение в XML Вложенные узлы Интерфейс NodeList Методы getLength() – количество элементов item(index) – элемент по индексу Методы интерфейса Node getChildNodes() – получить детей hasChildNodes() – проверить наличие детей
43Georgiy KorneevJava Advanced / Введение в XML Элементы Интерфейс Element Методы Работа с атрибутами Работа с вложенными элементами
44Georgiy KorneevJava Advanced / Введение в XML Разбор XML в DOM Класс DocumentBuilder Методы parse(File | InputStream | InputSource | URI) – построить документ isNamespaceAware() – поддерживает ли пространства имен
45Georgiy KorneevJava Advanced / Введение в XML Создание DocumentBuilder Класс DocumentBuilderFactory Методы static newInstance() – создать фабрику newDocumentBuilder() – создать DocumentBuilder setFeature(uri, value) – установить настройку setNamespaceAware(value) – установить поддержку пространств имен setIgnoringComments(value) – установить игнорирование комментариев setIgnoringElementContentWhitespace(value) – пропуск текстовых узлов из одних пробелов
Заключение Часть 6
47Georgiy KorneevJava Advanced / Введение в XML Ссылки (1) Extensible Markup Language 1.1 // / / XML Information Set // / / Namespaces in XML 1.1 // names / names /
48Georgiy KorneevJava Advanced / Введение в XML Ссылки (2) Document Object Model Level 3 Core Specificaction // 3-Core Core SAX Project // Java API for XML Processing //
49 СПбГУ ИТМО Georgiy KorneevJava Advanced / Введение в XML Вопросы