Существуют две стратегии обработки XML документов: DOM (Document Object Model) и SAX (Simple API for XML). Основное их отличие связано с тем, что использование DOM позволяет читать и вносить изменения в существующий XML-документ, а также создавать новый. Стратегия использования SAX основывается на том, что содержимое XML-документа только анализируется. XML-текст может быть больших размеров: DOM должен весь документ «заглотить» и проанализировать, а SAX-парсер обрабатывает XML-документ последовательно и не требует дополнительной памяти.
Для работы с XML-файлами Java располагает достаточно большим набором инструментов, начиная от встроенных возможностей, которые предоставляет Core Java, и заканчивая большим набором разнообразного стороннего кода, оформленного в виде библиотек. Сначала рассмотрим использование DOM для чтения XML-файла и создания нового файла/документа. А в заключение будет приведено описание и применение SAX-парсера SAXParser.
Чтение XML-файла
Получить объект Document XML-файла можно следующим образом :
Чтобы найти какой-либо узел в дереве можно использовать метод getElementsByTagName, который возвращает список всех элементов :
Метод getElementsByTagName является case-sensitive, т.е. различает прописные и строчные символы.
В цикле можно просмотреть все дочерние узлы. C помощью метода getAttributes можно узнать атрибуты узла. Метод getNodeType позволяет проверить тип узла :
Создание XML-файла
Для создания нового объекта Document используйте следующий код :
Элемент Element объекта Document создается с использованием метода createElement. Для определения значения элемента следует использовать метод setTextContent. Для добавления элемента в узловую запись используйте метод appendChild (Node). Элемент может содержать атрибуты. Чтобы добавить к элементу атрибут следует использовать метод setAttribute. Если элемент уже содержит атрибут, то его значение изменится.
В результате работы примера будет создан Document следующей структуры :
Пример чтения и создания XML-файла
Для чтения готового XML-файла и формирования нового файла создадим в IDE Eclipse простой проект XMLSample, структура которого представлена на следующем скриншоте.
Проект включает XML-файл «posts.xml» с исходными данными, создаваемый XML-файл данных «data.xml», класс Post.java, в который будут упаковываться отдельные записи массива данных и основной класс проекта XMLSample, который будет производить все необходимые действия.
Структура XML-файла
Листинг класса Person
Класс Person имеет несколько полей. Идентификатор записи id определяется при создании объекта в конструкторе. Методы set/get не представлены в листинге.
Чтение XML-файла
Для чтения XML-файла в проекте используется метод readDataXML(), который создает список persons типа List
, читает XML-файл данных и формирует объект doc типа Document. После этого в цикле создается массив данных. Вспомогательная функция getValue извлекает текст атрибута записи.
Создание XML-файла
Для создания нового XML-файла на основе массива posts подготовим два списка данных типа List : пользователей users и форумов forums. Эти два массива запишем в XML-файл.
Создание нового объекта Document и сохранение его в XML-файл в проекте выполняет метод writeDataXML :
Листинг метода создания XML-файла
Процедура сохранения объекта Document в XML-файл представлена отдельным методом writeDocument :
Листинг процедуры сохранения XML-файла
Если массив posts окажется пустым, то новый XML-файл должен будет иметь следующий вид :
SAX-парсер, SAXParser
SAX-парсеры используют для анализа XML-строки или извлечения из нее необходимой информации. Обычно SAX-парсеры требуют фиксированный объем памяти и не позволяют изменять содержимое. Для связи SAX-парсера с вызывающим приложением, как правило, используется функция обратного вызова.
Рассмотрим пример SAXExample.java с использованием класса SAXParser для анализа XML-текста, представленного файлом phonebook.xml, содержащего 3 записи и имеющего следующий вид :
Файл phonebook.xml
Пакеты «javax.xml.parsers» и «org.xml.sax» включают набор классов для «разбора» XML в строковом представлении. К основным классам этих пакетов, с точки зрения разложения XML объекта на составляющие, относятся SAXParser и DefaultHandler.
В примере SAXExample.java создается класс handler типа DefaultHandler, в котором методы анализа XML-строки переопределяются. Все прозрачно.
Листинг SAXExample.java
В результате выполнения примера использования SAXParser в консоль будут выведены следующие сообщения :
Скачать примеры
Рассмотренные на странице примеры использования DOM для чтения и создания XML-документа, применения SAXParser’а для анализа XML-текста в виде проекта Eclipse можно скачать здесь (133 Кб).
Объект DOM Document в Java
Объект DOM Document в Java представляет собой документ XML. Когда вы анализируете файл XML с помощью анализатора DOM, вы возвращаете объект Document.
Две наиболее часто используемые функции:
Интерфейс Document и все связанные интерфейсы находятся в пакете org.w3c.dom, поскольку они были разработаны Консорциумом World Wide Web(W3C).
Элемент документа
DOM-объект содержит множество различных узлов, связанных в древовидную структуру. Вверху находится объект Document. Он имеет единственный корневой элемент, который возвращается вызовом getDocumentElement() следующим образом:
Дочерние элементы и интерфейс узла
Корневой элемент имеет дочерние элементы, которые могут быть элементами, комментариями, инструкциями обработки, символами и т. д. Вы получаете дочерние элементы элемента следующим образом:
Метод getChildNodes () возвращает объект NodeList, который представляет собой список элементов Node. Интерфейс Node является суперинтерфейсом практически для всех типов узлов в DOM. Это означает, что интерфейс Document наследуется (расширяет) от Node, интерфейс Element расширяет Node, интерфейс Attr (атрибут) расширяет Node и т. д.
Тот факт, что Node является суперинтерфейсом всех интерфейсов узлов в DOM, означает, что вам иногда придется искать в Node необходимые вам методы, такие как getChildNodes(). Об этом следует знать при попытке перебора графа документа.
Атрибуты элемента
Как вы уже видели, вы можете получить доступ к атрибутам элемента через интерфейс Element. Есть два способа сделать это:
В большинстве случаев метод getAttribute () будет работать нормально.
Интерфейс Attr расширяет узел. Он позволяет вам получить доступ к элементу-владельцу через метод getOwnerElement() и т.д. Доступ к атрибуту через этот интерфейс в основном удобен, если вам нужно передать атрибут одному или нескольким методам.
Вы можете сделать гораздо больше с объектом Document и связанными с ним узлами, но доступ к дочерним элементам и атрибутам – это то, что вы будете использовать в 90% случаев.
Как читать XML–файл на Java – (DOM-анализатор)
Этот учебник покажет вам, как использовать встроенный в Java анализатор DOM для чтения XML-файла.
Автор оригинала: mkyong.
Этот учебник покажет вам, как использовать встроенный в Java анализатор DOM для чтения XML-файла.
Примечание Анализатор DOM работает медленно и потребляет много памяти при чтении большого XML-документа, потому что он загружает все узлы в память для обхода и манипулирования.
Вместо этого мы должны рассмотреть синтаксический анализатор SAX для чтения XML-документа большого размера, SAX работает быстрее, чем DOM, и использует меньше памяти.
1. Что такое Объектная модель документа (DOM)
Объектная модель документа (DOM) использует узлы для представления документа HTML или XML в виде древовидной структуры.
Ниже приведен простой XML-документ:
Основные общие термины.
2. Читать или анализировать XML-файл
В этом примере показано, как использовать встроенные API DOM-анализатора Java для чтения или анализа XML-файла.
2.1 Просмотрите приведенный ниже XML-файл.
2.2 Ниже приведен пример синтаксического анализа DOM для анализа или чтения вышеупомянутого XML-файла.
3. Чтение или анализ XML-файла (Юникод)
В синтаксическом анализаторе DOM нет разницы между чтением обычного XML-файла и XML-файла в Юникоде.
3.1 Просмотрите приведенный ниже XML-файл, содержащий некоторые китайские иероглифы (Юникод).
3.2 Приведенный ниже пример анализирует приведенный выше XML-файл; он перебирает все узлы один за другим и распечатывает его.
4. Анализировать XML-ответ Alexa API
В этом примере показано, как использовать анализатор DOM для анализа XML-ответа из API Alexa.
4.1 Отправьте запрос на следующий API Alexa.
Примечание Дополнительные примеры синтаксического анализа DOM – Oracle – Чтение XML-данных в DOM
чЧЕДЕОЙЕ Ч DOM
Nicholas Chase
29 ЙАМС 2003
уПДЕТЦБОЙЕ
еЭЕ ДП РПСЧМЕОЙС XML УХЭЕУФЧПЧБМБ пВЯЕЛФОБС нПДЕМШ дПЛХНЕОФБ, Document Object Model ЙМЙ DOM. пОБ РПЪЧПМСЕФ ТБЪТБВПФЮЙЛХ ПВТБЭБФШУС Л ЛПНРПОЕОФБН Ч XML-УФТХЛФХТЕ, ЧЩВЙТБФШ Й ЙЪНЕОСФШ ЙИ Й СЧМСЕФУС ЧБЦОПК ДМС ТБВПФЩ У XML. ч ЬФПН ХЮЕВОЙЛЕ ЧЩ ХЪОБЕФЕ П УФТХЛФХТЕ ДПЛХНЕОФБ DOM. чЩ ФБЛЦЕ ХЪОБЕФЕ П ФПН, ЛБЛ ЙУРПМШЪПЧБФШ ФЕИОПМПЗЙА Java ДМС УПЪДБОЙС ПВЯЕЛФБ Document ЙЪ XML_ЖБКМБ, ЙЪНЕОЕОЙС ЕЗП Й ЧЩВПТЛЙ ТЕЪХМШФБФПЧ.
тБЪДЕМ 1. чЧЕДЕОЙЕ
оХЦЕО МЙ НОЕ ЬФПФ ХЮЕВОЙЛ?
ьФПФ ХЮЕВОЙЛ РТЕДОБЪОБЮЕО ДМС ТБЪТБВПФЮЙЛПЧ, ЛПФПТЩЕ РПОЙНБАФ ВБЪПЧЩЕ ЛПОГЕРГЙЙ XML Й ЗПФПЧЩ РЕТЕИПДЙФШ Л ЛПДЙТПЧБОЙА РТЙМПЦЕОЙК ДМС НБОЙРХМЙТПЧБОЙС XML РТЙ РПНПЭЙ DOM. нЩ РТЕДРПМБЗБЕН, ЮФП ЧЩ ЪОБЛПНЩ У ФБЛЙНЙ ЛПОГЕРГЙСНЙ, ЛБЛ РТБЧЙМШОПЕ ЖПТНБФЙТПЧБОЙЕ Й ФЕЗПЧПК РТЙТПДПК XML ДПЛХНЕОФБ. (еУМЙ ОХЦОП, ЧЩ НПЦЕФЕ ХЪОБФШ ПВ ПУОПЧБИ XML ЙЪ ХЮЕВОЙЛБ чЧЕДЕОЙЕ Ч XML.)
чУЕ РТЙНЕТЩ Ч ЬФПН ХЮЕВОЙЛЕ РТЙЧПДСФУС ДМС СЪЩЛБ Java, ОП ЧЩ НПЦЕФЕ ЧЩТБВПФБФШ РПОЙНБОЙЕ DOM ДБЦЕ, ЕУМЙ ЧЩ ОЕ ЧЩРПМОЙФЕ УБНЙ ЬФЙ РТЙНЕТЩ. лПОГЕРГЙЙ Й API ДМС ЛПДЙТПЧБОЙС РТЙМПЦЕОЙК, ЛПФПТЩЕ НБОЙРХМЙТХАФ XML-ДБООЩНЙ Ч DOM, ПДОЙ Й ФЕ ЦЕ ДМС МАВПЗП СЪЩЛБ ЙМЙ РМБФЖПТНЩ Й Е ЧЛМАЮБАФ Ч УЕВС РТПЗТБННЙТПЧБОЙС ЗТБЖЙЮЕУЛПЗП РПМШЪПЧБФЕМШУЛПЗП ЙОФЕТЖЕКУБ.
юФП ФБЛПЕ DOM?
пУОПЧПК тБУЫЙТСЕНПЗП сЪЩЛБ тБЪНЕФЛЙ, Extensible Markup Language ЙМЙ XML СЧМСЕФУС DOM. XML-ДПЛХНЕОФЩ УПДЕТЦБФ ЙЕТБТИЙА ЙОЖПТНБГЙПООЩИ ЕДЙОЙГ, ОБЪЩЧБЕНЩИ ХЪМБНЙ; DOM СЧМСЕФУС УРПУПВПН ПРЙУБОЙС ЬФЙИ ХЪМПЧ Й ПФОПЫЕОЙК НЕЦДХ ОЙНЙ.
дЕКУФЧХАЭБС тЕЛПНЕОДБГЙС DOM, УЕКЮБУ ПОБ ОБИПДЙФУС ОБ хТПЧОЕ 2 (ОБ НПНЕОФ ОБРЙУБОЙС ХЮЕВОЙЛБ хТПЧЕОШ 3 ОБИПДЙФУС ОБ РПУМЕДОЕН ЬФБРЕ ТБЪТБВПФЛЙ), СЧМСЕФУС API, ЛПФПТЩК ПРТЕДЕМСЕФ ПВЯЕЛФЩ, РТЕДУФБЧМСЕНЩЕ Ч XML-ДПЛХНЕОФЕ, Б ФБЛЦЕ НЕФПДЩ Й УЧПКУФЧБ, ЛПФПТЩЕ ЙУРПМШЪХАФУС ДМС ДПУФХРБ Л ОЙН Й НБОЙРХМЙТПЧБОЙС ЙНЙ.
ьФПФ ХЮЕВОЙЛ ДЕНПОУФТЙТХЕФ API сДТБ DOM (DOM Core) ЛБЛ УТЕДУФЧП ЮФЕОЙС Й НБОЙРХМЙТПЧБОЙС XML-ДБООЩНЙ ОБ РТЙНЕТЕ УЕТЙЙ ЪБЛБЪПЧ Ч УЙУФЕНЕ ФПТЗПЧМЙ. пО ФБЛЦЕ ПВХЮБЕФ ЧБУ, ЛБЛ УПЪДБЧБФШ ПВЯЕЛФЩ DOM Ч ЧБЫЕН УПВУФЧЕООПН РТПЕЛФЕ ДМС ИТБОЕОЙС ДБООЩИ Й ТБВПФЩ У ОЙНЙ.
йОУФТХНЕОФЩ
тБЪДЕМ 2. юФП ФБЛПЕ DOM?
DOM ЛБЛ УФТХЛФХТБ
рТЕЦДЕ, ЮЕН ОБЮЙОБФШ ТБВПФХ У DOM, УФПЙФ РПМХЮЙФШ РТЕДУФБЧМЕОЙЕ П ФПН, ЮФП ПОБ ОБ УБНПН ДЕМЕ РТЕДУФБЧМСЕФ. пВЯЕЛФ DOM Document СЧМСЕФУС ЛПММЕЛГЙЕК ХЪМПЧ ЙМЙ РПТГЙК ЙОЖПТНБГЙЙ, ПТЗБОЙЪПЧБООЩИ Ч ЙЕТБТИЙА. ьФБ ЙЕТБТИЙС РПЪЧПМСЕФ ТБЪТБВПФЮЙЛХ ДЧЙЗБФШУС РП ДЕТЕЧХ Ч РПЙУЛБИ ОХЦОПК ЙОЖПТНБГЙЙ. бОБМЙЪ УФТХЛФХТЩ ПВЩЮОП ФТЕВХЕФ, ЮФПВЩ ВЩМ ЪБЗТХЦЕО РПМОЩК ДПЛХНЕОФ, Й ЙЕТБТИЙС ВЩМБ РПУФТПЕОБ ДП ОБЮБМБ ТБВПФЩ. рПУЛПМШЛХ DOM ПУОПЧЩЧБЕФУС ОБ ЙЕТБТИЙЙ ЙОЖПТНБГЙЙ, РТП ОЕЕ ЗПЧПТСФ, ЮФП ПОБ ДТЕЧПЧЙДОП-ВБЪЙТПЧБООБС ЙМЙ ПВЯЕЛФОП-ВБЪЙТПЧБООБС.
дМС ЙУЛМАЮЙФЕМШОП ВПМШЫЙИ ДПЛХНЕОФПЧ ТБЪВПТ Й ЪБЗТХЪЛБ РПМОПЗП ДПЛХНЕОФБ НПЦЕФ ВЩФШ НЕДМЕООПК Й ТЕУХТУПЕНЛПК, ФБЛ ЮФП ДМС ТБВПФЩ У ФБЛЙНЙ ДБООЩНЙ НПЗХФ ПЛБЪБФШУС МХЮЫЙНЙ ДТХЗЙЕ УТЕДУФЧБ. уПВЩФЙКОП-ВБЪЙТПЧБООЩЕ НПДЕМЙ, ФБЛЙЕ, ЛБЛ Simple API for XML (SAX), ТБВПФБАФ ОБ РПФПЛЕ ДБООЩИ, ПВТБВБФЩЧБС ЕЗП РП НЕТЕ РПУФХРМЕОЙС. (SAX СЧМСЕФУС ФЕНПК ДТХЗПЗП ХЮЕВОЙЛБ Й ДТХЗЙИ УФБФЕК Ч XML-ЪПОЕ developerWorks. дПРПМОЙФЕМШОХА ЙОЖПТНБГЙА УН. Ч тЕУХТУЩ.) уПВЩФЙКОП-ВБЪЙТПЧБООЩК API ПВИПДЙФ ОЕПВИПДЙНПУФШ РПУФТПЕОЙС ДЕТЕЧБ Ч РБНСФЙ, ОП ЖБЛФЙЮЕУЛЙ ОЕ РПЪЧПМСЕФ ТБЪТБВПФЮЙЛХ ЙЪНЕОСФШ ДБООЩЕ Ч ЙУИПДОПН ДПЛХНЕОФЕ.
у ДТХЗПК УФПТПОЩ, DOM ФБЛЦЕ ПВЕУРЕЮЙЧБЕФ API, ЛПФПТЩК РПЪЧПМСЕФ ТБЪТБВПФЮЙЛХ ДПВБЧМСФШ ЙМЙ ХДБМСФШ ХЪМЩ Ч МАВПК ФПЮЛЕ ДЕТЕЧБ Ч ОБДМЕЦБЭЙН ПВТБЪПН УПЪДБООПН РТЙМПЦЕОЙЙ.
лБТФБ DOM
тБВПФБ У DOM ЪБФТБЗЙЧБЕФ ОЕУЛПМШЛП ЛПОГЕРГЙК, ЛПФПТЩЕ ТБВПФБАФ ЧНЕУФЕ. чЩ ЙЪХЮЙФЕ ПФОПЫЕОЙС НЕЦДХ ОЙНЙ Ч ЬФПН ХЮЕВОЙЛЕ.
DOM ЛБЛ API
оБЮЙОБС У DOM хТПЧОС 1, DOM API УПДЕТЦЙФ ЙОФЕТЖЕКУЩ, ЛПФПТЩЕ РТЕДУФБЧМСАФ ЧУЕЧПЪНПЦОЩЕ ФЙРЩ ЙОЖПТНБГЙЙ, ЛПФПТЩЕ НПЗХФ ВЩФШ ОБКДЕОЩ Ч XML-ДПЛХНЕОФЕ, ФБЛЙЕ, ЛБЛ ЬМЕНЕОФЩ Й ФЕЛУФ. пО ФБЛЦЕ ЧЛМАЮБЕФ Ч УЕВС НЕФПДЩ Й УЧПКУФЧБ, ОЕПВИПДЙНЩЕ ДМС ТБВПФЩ У ЬФЙНЙ ПВЯЕЛФБНЙ.
хТПЧЕОШ 1 ЧЛМАЮБЕФ Ч УЕВС РПДДЕТЦЛХ XML 1.0 Й HTML, Ч ЛПФПТПК ЛБЦДЩК ЬМЕНЕОФ HTML РТЕДУФБЧМСЕФУС ЛБЛ ЙОФЕТЖЕКУ. пО ЧЛМАЮБЕФ Ч УЕВС НЕФПДЩ ДМС ДПВБЧМЕОЙС, ТЕДБЛФЙТПЧБОЙС, РЕТЕНЕЭЕОЙС Й ЮФЕОЙС ЙОЖПТНБГЙЙ, УПДЕТЦБЭЕКУС Ч ХЪМБИ Й Ф.Д. пО, ПДОБЛП, ОЕ ЧЛМАЮБЕФ Ч УЕВС РПДДЕТЦЛХ РТПУФТБОУФЧ ЙНЕО XML, ЛПФПТЩЕ ПВЕУРЕЮЙЧБАФ ЧПЪНПЦОПУФШ УЕЗНЕОФЙТПЧБФШ ЙОЖПТНБГЙА ЧОХФТЙ ДПЛХНЕОФБ.
рПДДЕТЦЛБ РТПУФТБОУФЧ ВЩМБ ДПВБЧМЕОБ Ч DOM хТПЧОС 2. хТПЧЕОШ 2 ТБУЫЙТСЕФ хТПЧЕОШ 1, РПЪЧПМСС ТБЪТБВПФЮЙЛБН ПВОБТХЦЙЧБФШ Й ЙУРПМШЪПЧБФШ ЙОЖПТНБГЙА РТПУФТБОУФЧ ЙНЕО, ЛПФПТБС НПЦЕФ ВЩФШ РТЙНЕОЙНБ Л ХЪМХ. хТПЧЕОШ 2 ДПВБЧМСЕФ ФБЛЦЕ ОЕУЛПМШЛП НПДХМЕК РПДДЕТЦЛЙ лБУЛБДЙТХЕНЩИ фБВМЙГ уФЙМЕК, Cascading Style Sheets (CSS), УПВЩФЙК Й ТБУЫЙТЕООЩИ НБОЙРХМСГЙК У ДЕТЕЧПН.
DOM хТПЧОС 3, Ч ОБУФПСЭЕЕ ЧТЕНС ОБИПДСЭЙКУС ОБ РПУМЕДОЕН ЬФБРЕ ТБЪТБВПФЛЙ, ЧЛМАЮБЕФ Ч УЕВС ХМХЮЫЕООХА РПДДЕТЦЛХ ПВЯЕЛФБ Document (РТЕДЩДХЭЙЕ ЧЕТУЙЙ ПУФБЧМСМЙ ЬФП ОБ ХУНПФТЕОЙЕ РТЙМПЦЕОЙК, ЮФП ДЕМБМП ЪБФТХДОЙФЕМШОЩН УПЪДБОЙЕ ТПДПЧЩИ РТЙМПЦЕОЙК), ТБУЫЙТЕООХА РПДДЕТЦЛХ РТПУФТБОУФЧ ЙНЕО, Й ОПЧЩЕ НПДХМЙ ДМС ЪБЗТХЪЛЙ Й УПИТБОЕОЙС ДПЛХНЕОФПЧ, РТПЧЕТЛЙ РТБЧЙМШОПУФЙ Й XPath, УТЕДУФЧБ ДМС ЧЩВПТБ ХЪМПЧ, ЙУРПМШЪХЕНЩЕ Ч XSL Transformations Й ДТХЗЙИ ФЕИОПМПЗЙСИ XML.
нПДХМСТЙЪБГЙС DOM ПЪОБЮБЕФ ДМС ТБЪТБВПФЮЙЛПЧ, ЮФП ЧЩ ДПМЦОЩ ЪОБФШ, РПДДЕТЦЙЧБАФУС МЙ ФЕ ЧПЪНПЦОПУФЙ, ЛПФПТЩЕ ЧЩ ИПФЙФЕ ЙУРПМШЪПЧБФШ, ФПК ТЕБМЙЪБГЙЕК DOM, У ЛПФПТПК ЧЩ ТБВПФБЕФЕ.
пРТЕДЕМЕОЙЕ ДПУФХРОПУФЙ УЧПКУФЧ
нПДХМШОБС УФТХЛФХТБ тЕЛПНЕОДБГЙК DOM ДБЕФ ЧПЪНПЦОПУФШ РТПЙЪЧПДЙФЕМСН ТЕБМЙЪБГЙК РЕТЕВЙТБФШ Й ЧЩВЙТБФШ, ЛБЛПК ТБЪДЕМ ЧЛМАЮБФШ Ч ЙИ РТПДХЛФ, ФБЛ ЮФП НПЦЕФ ВЩФШ ОЕПВИПДЙНЩН ПРТЕДЕМЙФШ, ДПУФХРОП МЙ ДБООПЕ ЛПОЛТЕФОПЕ УЧПКУФЧП, РТЕЦДЕ ЮЕН РЩФБФШУС ЙУРПМШЪПЧБФШ ЕЗП. ьФПФ ХЮЕВОЙЛ ЙУРПМШЪХЕФ ФПМШЛП API сДТБ DOM (Core DOM) хТПЧОС 2, ОП ЧБН УФПЙФ РПОЙНБФШ, ЛБЛ НПЦЕФ ВЩФШ УЧПКУФЧП ПВОБТХЦЕОП, ЛПЗДБ ЧЩ РЕТЕКДЕФЕ Л УПВУФЧЕООЩН РТПЕЛФБН.
ьФПФ ХЮЕВОЙЛ ЙУРПМШЪХЕФ ПДЙО ДПЛХНЕОФ ДМС ДЕНПОУФТБГЙЙ ПВЯЕЛФПЧ Й НЕФПДПЧ API сДТБ DOM.
вБЪПЧЩК XML-ЖБКМ
ч DOM ТБВПФБ У XML-ЙОЖПТНБГЙЕК ПЪОБЮБЕФ ТБЪВЙЕОЙЕ ЕЕ УОБЮБМБ РП ХЪМБН.
тБЪДЕМ 3. тБЪМЙЮОЩЕ ФЙРЩ ХЪМПЧ XML
уПЪДБОЙЕ ЙЕТБТИЙЙ
DOM, Ч УХЭОПУФЙ, СЧМСЕФУС ЛПММЕЛГЙЕК ХЪМПЧ. рТЙ ФПН, ЮФП Ч ДПЛХНЕОФЕ РПФЕОГЙБМШОП УПДЕТЦБФУС ТБЪОЩЕ ФЙРЩ ЙОЖПТНБГЙЙ, ПРТЕДЕМЕОП Й ОЕУЛПМШЛП ФЙРПЧ ХЪМПЧ.
тБЪМЙЮЙЕ НЕЦДХ ЬМЕНЕОФБНЙ Й ХЪМБНЙ
рТСНПХЗПМШОЙЛЙ РТЕДУФБЧМСАФ ЬМЕНЕОФОЩЕ ХЪМЩ, Б ПЧБМЩ РТЕДУФБЧМСАФ ФЕЛУФПЧЩЕ ХЪМЩ. еУМЙ ПДЙО ХЪЕМ УПДЕТЦЙФ Ч УЕВЕ ДТХЗПК, ФП РПУМЕДОЙК ТБУУНБФТЙЧБЕФУС ЛБЛ РПФПНПЛ ЬФПЗП ХЪМБ.
ъБНЕФШФЕ ФБЛЦЕ, ЮФП ФП, ЮФП НПЦЕФ ТБУУНБФТЙЧБФШУС ЛБЛ УПДЕТЦЙНПЕ ЬМЕНЕОФБ, ОБРТЙНЕТ, «Premium Cinch», ОБ УБНПН ДЕМЕ СЧМСЕФУС УПДЕТЦЙНЩН ФЕЛУФПЧПЗП ХЪМБ, ЛПФПТЩК СЧМСЕФУС РПФПНЛПН ЬМЕНЕОФБ name.
(дБЦЕ ЬФПФ ТЙУХОПЛ ОЕ СЧМСЕФУС ЪБЛПОЮЕООЩН, ПУФБЧМСС ЧОЕ УЖЕТЩ ЧОЙНБОЙС, РПНЙНП РТПЮЕЗП, ХЪМЩ БФТЙВХФПЧ.)
вБЪПЧЩЕ ФЙРЩ ХЪМПЧ: ДПЛХНЕОФ, ЬМЕНЕОФ, БФТЙВХФ Й ФЕЛУФ
нЕОЕЕ ТБУРТПУФТБОЕООЩЕ ФЙРЩ ХЪМПЧ: CDATA, ЛПННЕОФБТЙЙ, ЙОУФТХЛГЙЙ ПВТБВПФЛЙ Й ЖТБЗНЕОФЩ ДПЛХНЕОФБ
дТХЗЙЕ ФЙРЩ ХЪМПЧ ЧЛМАЮБАФ Ч УЕВС УХЭОПУФЙ, ХЪМЩ УУЩМПЛ ОБ УХЭОПУФЙ Й ОПФБГЙЙ. пДОЙН ЙЪ УРПУПВПЧ ДПРПМОЙФЕМШОПК ПТЗБОЙЪБГЙЙ XML-ДБООЩИ СЧМСЕФУС РТЙНЕОЕОЙЕ РТПУФТБОУФЧ ЙНЕО.
тБЪДЕМ 4. рТПУФТБОУФЧБ ЙНЕО
юФП ФБЛПЕ РТПУФТБОУФЧП ЙНЕО?
пДОП ЙЪ ЗМБЧОЩИ ХУПЧЕТЫЕОУФЧПЧБОЙК НЕЦДХ DOM хТПЧОС 1 Й DOM хТПЧОС 2 СЧМСЕФУС ДПВБЧМЕОЙЕ РПДДЕТЦЛЙ РТПУФТБОУФЧ ЙНЕО. рПДДЕТЦЛБ РТПУФТБОУФЧ ЙНЕО РПЪЧПМСЕФ ТБЪТБВПФЮЙЛБН ЙУРПМШЪПЧБФШ ЙОЖПТНБГЙА ЙЪ ТБЪОЩИ ЙУФПЮОЙЛПЧ ЙМЙ Ч ТБЪОЩИ ГЕМСИ ВЕЪ ЛПОЖМЙЛФПЧ.
лПОГЕРФХБМШОП РТПУФТБОУФЧБ ЙНЕО СЧМСАФУС ЪПОБНЙ, Ч ЛПФПТЩИ ЧУЕ ЙНЕОБ ДПМЦОЩ ВЩФШ ХОЙЛБМШОЩ.
у ДТХЗПК УФПТПОЩ, ЕУМЙ С ОБИПЦХУШ ЧОЕ ПЖЙУБ, Й ПОБ ДЕМБЕФ ФБЛПЕ ЦЕ ЪБСЧМЕОЙЕ, ЧПЪНПЦОП ОЕДПТБЪХНЕОЙЕ, РПУЛПМШЛХ УХЭЕУФЧХАФ ДЧЕ ЧПЪНПЦОПУФЙ.
фЕ ЦЕ РТПВМЕНЩ ЧПЪОЙЛБАФ, ЛПЗДБ XML-ДБООЩЕ ЙЪ ТБЪОЩИ ЙУФПЮОЙЛПЧ ЛПНВЙОЙТХАФУС (ЛБЛ Ч ЙОЖПТНБГЙЙ П ЛТЕДЙФПУРПУПВОПУФЙ Ч ЖБКМЕ-РТЙНЕТЕ, РПДТПВОП ТБУУНБФТЙЧБЕНПН Ч ЬФПН ХЮЕВОЙЛЕ РПЪЦЕ).
уПЪДБОЙЕ РТПУФТБОУФЧБ ЙНЕО
рПУЛПМШЛХ ЙДЕОФЙЖЙЛБФПТЩ ДМС РТПУФТБОУФЧ ЙНЕО ДПМЦОЩ ВЩФШ ХОЙЛБМШОЩНЙ, ПОЙ ПВПЪОБЮБАФУС РТЙ РПНПЭЙ хОЙЖЙГЙТПЧБООЩИ йДЕОФЙЖЙЛБФПТПЧ тЕУХТУПЧ, Uniform Resource Identifiers ЙМЙ URI. оБРТЙНЕТ, РТПУФТБОУФЧП ЙНЕО РП ХНПМЮБОЙА ДМС ДБООЩИ РТЙНЕТБ ВХДЕФ ПВПЪОБЮЕОП РТЙ РПНПЭЙ БФТЙВХФБ xmlns :
(нОПЗПФПЮЙЕ РТЕДУФБЧМСЕФ ОЕУХЭЕУФЧЕООЩК ЖТБЗНЕОФ.)
чБЦОП ПФНЕФЙФШ ЗТПНБДОХА ТБЪОЙГХ НЕЦДХ РТПУФТБОУФЧПН ЙНЕО РП ХНПМЮБОЙА Й ПФУХФУФЧЙЕН РТПУФТБОУФЧБ ЙНЕО ЧППВЭЕ. ч ЬФПН УМХЮБЕФ ЬМЕНЕОФЩ, ЛПФПТЩЕ ОЕ ЙНЕАФ РТЕЖЙЛУБ РТПУФТБОУФЧБ ЙНЕО, ОБИПДСФУС Ч РТПУФТБОУФЧЕ ЙНЕО РП ХНПМЮБОЙА. еУМЙ ЦЕ ОЕ УХЭЕУФЧХЕФ РТПУФТБОУФЧБ ЙНЕО РП ХНПМЮБОЙА, ФБЛЙЕ ЬМЕНЕОФЩ ОБИПДСФУС ЧОЕ РТПУФТБОУФЧБ ЙНЕО.
чЩ НПЦЕФЕ ФБЛЦЕ УПЪДБЧБФШ ЧФПТЙЮОЩЕ РТПУФТБОУФЧБ ЙНЕО Й ДПВБЧМСФШ Ч ОЙИ ЬМЕНЕОФЩ ЙМЙ БФТЙВХФЩ.
пРТЕДЕМЕОЙЕ РТПУФТБОУФЧ ЙНЕО
дМС ДБООЩИ НПЗХФ ВЩФШ ПРТЕДЕМЕОЩ ФБЛЦЕ Й ДТХЗЙЕ РТПУФТБОУФЧБ ЙНЕО. оБРТЙНЕТ, УПЪДБОЙЕН РТПУФТБОУФЧБ ЙНЕО rating ЧЩ НПЦЕФЕ ДПВБЧЙФШ ЙОЖПТНБГЙА ПГЕОЛЙ ЛТЕДЙФПУРПУПВОПУФЙ Ч ФЕЛУФ ЪБЛБЪБ, ОЕ ВЕУРПЛПСУШ ПВ ЙНЕАЭЙИУС ДБООЩИ.
йОЖПТНБГЙС РТПУФТБОУФЧБ ЙНЕО НПЦЕФ ВЩФШ РПМХЮЕОБ ДМС ХЪМБ РПУМЕ ФПЗП, ЛБЛ ДПЛХНЕОФ ВЩМ ТБЪПВТБО.
тБЪДЕМ 5. тБЪВПТ ЖБКМБ Ч ДПЛХНЕОФ
фТЕИЫБЗПЧЩК РТПГЕУУ
фЕРЕТШ ЧЩ НПЦЕФЕ ОБЮБФШ РПУФТПЕОЙЕ РТЙМПЦЕОЙС.
вБЪПЧПЕ РТЙМПЦЕОЙЕ
хУФБОПЧЛЙ РБТУЕТБ
йУЛМАЮЕОЙС РБТУЕТБ
юФПВЩ МХЮЫЕ ДЙБЗОПУФЙТПЧБФШ РТПВМЕНЩ, ЧЩ НПЦЕФЕ ЧЩМБЧМЙЧБФШ УРЕГЙЖЙЮЕУЛЙЕ ЙУЛМАЮЕОЙС, ПФОПУСЭЙЕУС Л ТБЪМЙЮОЩН БУРЕЛФБН УПЪДБОЙС Й ЙУРПМШЪПЧБОЙС РБТУЕТБ:
лПЗДБ РБТУЕТ УПЪДБМ ДПЛХНЕОФ, РТЙМПЦЕОЙЕ НПЦЕФ РТПИПДЙФШ ЮЕТЕЪ ОЕЗП ДМС ПВТБВПФЛЙ ДБООЩИ.
тБЪДЕМ 6. рТПИПЦДЕОЙЕ РП ДПЛХНЕОФХ
рПМХЮЕОЙЕ ЛПТОЕЧПЗП ЬМЕНЕОФБ
рПМХЮЕОЙЕ РПФПНЛБ ЬМЕНЕОФБ
ъБНЕФШФЕ, ЮФП ДПЛХНЕОФ ЙНЕЕФ ФПМШЛП ДЧБ ЬМЕНЕОФБ, ОП NodeList УПДЕТЦЙФ РСФШ РПФПНЛПЧ, ЧЛМАЮБС ФТЙ ФЕЛУФПЧЩИ ХЪМБ, ЛПФПТЩЕ УПДЕТЦБФ РЕТЕЧПДЩ УФТПЛ.
йУРПМШЪПЧБОЙЕ getFirstChild() Й getNextSibling()
пФОПЫЕОЙС РТЕДПЛ-РПФПНПЛ Й ВТБФУЛЙЕ ПФОПЫЕОЙС РТЕДМБЗБАФ БМШФЕТОБФЙЧОЩК УРПУПВ ДМС РЕТЕВПТБ ЧУЕИ РПФПНЛПЧ ДБООПЗП ХЪМБ, ЛПФПТЩК НПЦЕФ ВЩФШ ВПМЕЕ РПДИПДСЭЙН Ч ОЕЛПФПТЩИ УЙФХБГЙСИ, ОБРТЙНЕТ, ЛПЗДБ ДМС РПОЙНБОЙС ДБООЩИ ЧБЦОЩ ПФОПЫЕОЙС Й РПТСДПЛ, Ч ЛПФПТПН РПСЧМСАФУС РПФПНЛЙ.
тЕЛХТУЙС ЮЕТЕЪ НОПЗЙЕ ХТПЧОЙ РПФПНЛПЧ
лПД Ч РПДТБЪДЕМЕ йУРПМШЪПЧБОЙЕ getFirstChild() Й getNextSibling() РПЛБЪЩЧБЕФ РПФПНЛБ РЕТЧПЗП ХТПЧОС, ОП ЬФП ФТХДОП ДМС ЧУЕЗП ДПЛХНЕОФБ. юФПВЩ ХЧЙДЕФШ ЧУЕ ЬМЕНЕОФЩ, ЖХОЛГЙПОБМШОПУФШ РТЕДЩДХЭЕЗП РТЙНЕТБ ДПМЦОБ ВЩФШ ПЖПТНМЕОБ Ч НЕФПД Й ДПМЦОБ ЧЩЪЩЧБФШУС ТЕЛХТУЙЧОП.
рТЙМПЦЕОЙЕ ОБЮЙОБЕФ У ЛПТОЕЧПЗП ЬМЕНЕОФБ Й РЕЮБФБЕФ ЙНС Й ЪОБЮЕОЙЕ ОБ ЬЛТБОЕ. ъБФЕН РТЙМПЦЕОЙЕ РТПИПДЙФ ЮЕТЕЪ ЛБЦДЩК ЕЗП РПФПНПЛ ФБЛ ЦЕ, ЛБЛ Й ТБОШЫЕ. оП ДМС ЛБЦДПЗП РПФПНЛБ РТЙМПЦЕОЙЕ ФБЛЦЕ РТПИПДЙФ ЮЕТЕЪ ЛБЦДЩК ЕЗП РПФПНПЛ, РТПЧЕТСС ЧУЕИ «ДЕФЕК» Й «ЧОХЛПЧ» ЛПТОЕЧПЗП ЬМЕНЕОФБ.
чЛМАЮЕОЙЕ БФТЙВХФПЧ
тБЪДЕМ 7. тЕДБЛФЙТПЧБОЙЕ ДПЛХНЕОФБ
йЪНЕОЕОЙЕ ЪОБЮЕОЙС Ч ХЪМЕ
рТПУНПФТ УПДЕТЦЙНПЗП XML-ДПЛХНЕОФ РПМЕЪЕО, ОП ЛПЗДБ ЧЩ ЙНЕЕФЕ ДЕМП У РПМОПЖХОЛГЙПОБМШОЩН РТЙМПЦЕОЙЕН, ЧБН НПЦЕФ РПОБДПВЙФШУС ЙЪНЕОСФШ ДБООЩЕ, ДПВБЧМСС, РЕТЕНЕЭБС ЙМЙ ХДБМСС ЙОЖПТНБГЙА. чПЪНПЦОПУФШ ТЕДБЛФЙТПЧБОЙС ДБООЩИ ФБЛЦЕ ЧБЦОБ РТЙ УПЪДБОЙЙ ОПЧЩИ XML-ДПЛХНЕОФПЧ. рТПУФЕКЫЙН ЙЪ ФБЛЙИ ЙЪНЕОЕОЙК СЧМСЕФУС ЙЪНЕОЕОЙЕ ФЕЛУФПЧПЗП УПДЕТЦБОЙС ЬМЕНЕОФБ.
оБЫЕК ГЕМША СЧМСЕФУС ЙЪНЕОЙФШ ЪОБЮЕОЙЕ ФЕЛУФПЧПЗП ХЪМБ ЬМЕНЕОФБ, Ч ДБООПН УМХЮБЕ ХУФБОПЧЛПК status ДМС ЛБЦДПЗП order Ч «processed», Б ЪБФЕН ЧЩЧЕУФЙ ОПЧЩЕ ЪОБЮЕОЙС ОБ ЬЛТБО.
нЕФПД changeOrder() ЧЩЪЩЧБЕФУС У РЕТЕДБЮЕК ЕНХ ОБЮБМШОПЗП ХЪМБ ( root ) Ч ЛБЮЕУФЧЕ РБТБНЕФТБ, Б ФБЛЦЕ ЙНЕОЙ ЙЪНЕОСЕНПЗП ЬМЕНЕОФБ Й ЙЪНЕОЕООПЗП ЪОБЮЕОЙС.
changeOrder() УОБЮБМБ РТПЧЕТСЕФ ЙНС ХЪМБ, ЮФПВЩ ХЧЙДЕФШ, ФПФ МЙ ЬМЕНЕОФ, ЛПФПТЩК ТЕДБЛФЙТХЕФУС. еУМЙ ЬФП ФБЛ, РТЙМПЦЕОЙА ОХЦОП ЙЪНЕОЙФШ ЪОБЮЕОЙЕ ОЕ ЬФПЗП ХЪМБ, Б ЕЗП РЕТЧПЗП РПФПНЛБ, РПУЛПМШЛХ ЬФПФ РЕТЧЩК РПФПНПЛ СЧМСЕФУС ФЕЛУФПЧЩН ХЪМПН, ЛПФПТЩК ОБ УБНПН ДЕМЕ УПДЕТЦЙФ УПДЕТЦЙНПЕ ЬМЕНЕОФБ.
ч РТПФЙЧОПН УМХЮБЕ РТЙМПЦЕОЙЕ РТПЧЕТСЕФ ЛБЦДЩК РПФПНПЛ ФБЛ ЦЕ, ЛБЛ ЬФП ДЕМБМПУШ РТЙ РТПИПЦДЕОЙЙ РП ДПЛХНЕОФХ Ч РЕТЧЩК ТБЪ.
ъБНЕФШФЕ, ЮФП РТЙМПЦЕОЙЕ ЧЩВЙТБЕФ ХЪМЩ status ДБЦЕ, ОЕУНПФТС ОБ ФП, ЮФП ПОЙ СЧМСАФУС «ЧОХЛБНЙ» ЛПТОЕЧПЗП ЬМЕНЕОФБ, Б ОЕ ОЕРПУТЕДУФЧЕООЩНЙ ЕЗП «ДЕФШНЙ». getElementsByTagName() РТПИПДЙФ ЮЕТЕЪ ДПЛХНЕОФ Й ОБИПДЙФ ЧУЕ ЬМЕНЕОФЩ У ПРТЕДЕМЕООЩН ЙНЕОЕН.
дПВБЧМЕОЙЕ ХЪМПЧ: РПДЗПФПЧЛБ ДБООЩИ
дПВБЧМЕОЙЕ ХЪМПЧ: ДПВБЧМЕОЙЕ ХЪМПЧ Ч ДПЛХНЕОФ
рТПИПЦДЕОЙЕ ЮЕТЕЪ ДПЛХНЕОФ РТПЧЕТСЕФ ЙЪНЕОЕОЙС.
хДБМЕОЙЕ ХЪМБ
чНЕУФП ФПЗП, ЮФПВЩ ЪБНЕОСФШ ЬМЕНЕОФ, РТЙМПЦЕОЙЕ НПЦЕФ ХДБМЙФШ ЕЗП УПЧУЕН. ч ДБООПН РТЙНЕТЕ РТЙМПЦЕОЙЕ РТПЧЕТСЕФ, ЙНЕЕФУС МЙ УПУФБЧМСАЭБС ОБ УЛМБДЕ. еУМЙ ОЕФ, ПОП ХДБМСЕФ УПУФБЧМСАЭХА ЙЪ ЪБЛБЪБ ЧНЕУФП ФПЗП, ЮФПВЩ РТЙВБЧМСФШ ЕЕ Л ЙФПЗХ.
ъБНЕОБ ХЪМБ
ъБНЕФШФЕ, ЮФП РПУЛПМШЛХ ОЙЛБЛПЕ УПДЕТЦЙНПЕ ОЕ ВЩМП ДПВБЧМЕОП Ч ЬМЕНЕОФ, ЬФПФ ЬМЕНЕОФ СЧМСЕФУС РХУФЩН. рХУФПК ЬМЕНЕОФ ОЕ ЙНЕЕФ УПДЕТЦЙНПЗП Й НПЦЕФ ВЩФШ ЪБРЙУБО Ч УПЛТБЭЕООПН ЧЙДЕ:
уПЪДБОЙЕ Й ХУФБОПЧЛБ БФТЙВХФПЧ
хДБМЕОЙЕ БФТЙВХФБ
рТЙМПЦЕОЙЕ НПЦЕФ ФБЛЦЕ ХДБМЙФШ БФТЙВХФ. оБРТЙНЕТ, НПЦЕФ ВЩФШ ОЕЦЕМБФЕМШОЩН РПЛБЪЩЧБФШ ОБ ЧЩИПДЕ ЙОЖПТНБГЙА П ЛТЕДЙФЕ РПЛХРБФЕМС, ФБЛ ЮФП РТЙМПЦЕОЙЕ НПЦЕФ ЧТЕНЕООП ХДБМЙФШ ЕЕ ЙЪ ДПЛХНЕОФБ.
хДБМЕОЙЕ ЙОЖПТНБГЙЙ ЧЩРПМОСЕФУС СЧОЩН ПВТБЪПН РТЙ РПНПЭЙ removeAttribute() ДМС ХДБМЕОЙС ДБООЩИ.
пДОБЛП УМЕДХАЭЙК ЫБЗ ЙУРПМШЪХЕФ ЙОЖПТНБГЙА П ЛТЕДЙФЕ, ФБЛ ЮФП ЧБН УМЕДХЕФ ХДБМЙФШ РПУМЕДОЙЕ ЙЪНЕОЕОЙС РТЕЦДЕ, ЮЕН ДЧЙЗБФШУС ДБМШЫЕ.
тБЪДЕМ 8. чЩЧПД ДПЛХНЕОФБ
рПДЗПФПЧЛБ ДБООЩИ
нЩ Ч ОБЫЕН ХЮЕВОЙЛЕ ТБУУНПФТЕМЙ, ЛБЛ ЧЩВЙТБФШ, ТБВПФБФШ Й НБОЙРХМЙТПЧБФШ У XML-ДБООЩНЙ. дМС ЪБЧЕТЫЕОЙС ГЙЛМБ ЧЩ ДПМЦОЩ ФБЛЦЕ ХНЕФШ ЧЩЧПДЙФШ XML.
рПЛБ ЧУЕ ЬФП РТПЙУИПДЙФ, ЬМЕНЕОФ newRoot ОБ УБНПН ДЕМЕ ОЕ РТЙУПЕДЙОЕО Л ТПДЙФЕМШУЛПНХ ХЪМХ. лПЗДБ РТЙМПЦЕОЙЕ ЪБЧЕТЫЙФ ПВТБВПФЛХ ЧУЕИ ЪБЛБЪПЧ, newRoot РТЙУПЕДЙОСЕФУС Л ОПЧПНХ ДПЛХНЕОФХ.
уПЪДБОЙЕ XML-ЖБКМБ
фЕРЕТШ ОБН СУОП, ЛБЛ РТЙМПЦЕОЙЕ ДПМЦОП УПЪДБЧБФШ ОПЧХА ЙОЖПТНБГЙА Й ЧЩЧПДЙФШ ЕЕ Ч ЖБКМ.
фБ ЦЕ МПЗЙЛБ ЙУРПМШЪХЕФУС ДМС ДБООЩИ, ОП ЧНЕУФП ФПЗП, ЮФПВЩ ЧЩЧПДЙФШ ОБ ЬЛТБО, РТЙМПЦЕОЙЕ РПУЩМБЕФ ЙИ Ч ЖБКМ.
чБЦОПЕ ПВУФПСФЕМШУФЧП, ЛПФПТПЕ УФПЙФ ЪДЕУШ ПФНЕФЙФШ, УПУФПЙФ Ч ФПН, ЮФП РПУЛПМШЛХ XML-ДБООЩЕ СЧМСАФУС РТПУФП ФЕЛУФПН, ПОЙ НПЗХФ ВЩФШ ЖПТНБФЙТПЧБОЩ МАВЩН УРПУПВПН. оБРТЙНЕТ, ЧЩ НПЦЕФЕ УПЪДБФШ ТБЪОПЧЙДОПУФШ stepThroughAll() ЛПФПТБС ВХДЕФ УПЪДБЧБФШ ЧЕТУЙА У ПФУФХРБНЙ, ЛТБУЙЧХА ДМС РЕЮБФЙ. фПМШЛП РПНОЙФЕ, ЮФП ЬФП ВХДЕФ УПЪДБЧБФШ МЙЫОЙЕ ХЪМЩ РТПРХУЛПЧ (ФЕЛУФПЧЩЕ).
фПЦДЕУФЧЕООЩЕ РТЕПВТБЪПЧБОЙС
пДОЙН ЙЪ УРПУПВПЧ, ЛПФПТЩК ТБЪТБВПФЮЙЛЙ ЮБУФП ЧЩВЙТБАФ ДМС УЕТЙБМЙЪБГЙЙ ЙИ ПВЯЕЛФПЧ Document DOM УПУФПЙФ Ч УПЪДБОЙЙ ФПЦДЕУФЧЕООПЗП РТЕПВТБЪПЧБОЙС. ьФП XSL Transformation, ЛПФПТБС ЧЛМАЮБЕФ Ч УЕВС ФБВМЙГЩ УФЙМЕК. оБРТЙНЕТ:
ъДЕУШ ЧЩ УПЪДБЕФЕ ЙУФПЮОЙЛ Й ТЕЪХМШФБФ, ОП РПУЛПМШЛХ ЧЩ ТБВПФБЕФЕ У ФПЦДЕУФЧЕООЩН РТЕПВТБЪПЧБОЙЕН, ЧЩ ОЕ УПЪДБЕФЕ ПВЯЕЛФ ДМС РТЕДУФБЧМЕОЙС ФБВМЙГЩ УФЙМЕК. еУМЙ ВЩ ЬФП ВЩМП ОБУФПСЭЕЕ РТЕПВТБЪПЧБОЙЕ, Ч УПЪДБОЙЙ Transformer ДПМЦОБ ВЩМБ ВЩ ЙУРПМШЪПЧБФШУС ФБВМЙГБ УФЙМЕК. чНЕУФП ЬФПЗП Transformer РТПУФП РТЙОЙНБЕФ ЙУФПЮОЙЛ (Document) Й РПУЩМБЕФ ЕЗП Ч ТЕЪХМШФБФ (ЖБКМ processed.xml ).
тБЪДЕМ 9. тЕЪАНЕ РП DOM
тЕЪАНЕ
API DOM ДБЕФ ТБЪТБВПФЮЙЛХ ЧПЪНПЦОПУФШ ЮЙФБФШ, УПЪДБЧБФШ Й ТЕДБЛФЙТПЧБФШ XML-ДБООЩЕ. ч ЬФПН ХЮЕВОЙЛЕ ВЩМЙ ТБУУНПФТЕОЩ ЛПОГЕРГЙЙ DOM Й РТПЙММАУФТЙТПЧБОЩ РТЙНЕТБНЙ Java-ЛПДБ. тЕБМЙЪБГЙЙ DOM ФБЛЦЕ ДПУФХРОЩ Ч C++, Perl Й ДТХЗЙИ СЪЩЛБИ.




