Главная » Java, Web, XML » Анализ документов XML с помощью DOM API

0

Как видно из предыдущих разделов, SAX-napcep читает документ только один раз, отмечая появляющиеся по ходу чтения открывающие теги, содержимое элементов и закрывающие теги. Этого достаточно для связывания данных, но неудобно для редактирования документа.

Консорциум W3C разработал спецификации и набор интерфейсов D0M, которые можно посмотреть на сайте этого проекта http://www.w3.org/D0M/. Методами этих интерфейсов документ XML можно загрузить в оперативную память в виде дерева объектов. Это позволяет не только анализировать документ анализаторами, основанными на структуре дерева, но и менять дерево, добавляя или удаляя объекты из дерева. Кроме того, можно обращаться непосредственно к каждому объекту в дереве и не только читать, но и изменять информацию, хранящуюся в нем. Однако, все это требует большого объема оперативной памяти для загрузки большого дерева.

Фирма Sun Microsystems реализовала интерфейсы D0M в пакетах javax. xml.parsers и org.w3c.dom, входящих в состав пакета JAXP. Воспользоваться этой реализацией очень легко:

DocumentBuilderFactory fact =

DocumentBuilderFactory.newInstance();

3 Зж. 748

DocumentBuilder builder = fact.newDocumentBuilder(); Document doc = builder .parse ("ntb. xml") ;

Метод parse () строит дерево объектов и возвращает ссылку на него в виде объекта типа Document. В классе DocumentBuilder есть несколько методов par sen, позволяющих загрузить файл с адреса URL, из входного потока, как объект класса File или из источника класса

Интерфейс Document, расширяющий интерфейс Node, описывает дерево объектов документа в целом. Интерфейс Node — основной интерфейс в описании структуры дерева — описывает узел дерева. У него есть еще один наследник — интерфейс Element, описывающий лист дерева, соответствующий элементу документа XML. Как видно из структуры наследования этих интерфейсов, и само дерево, и его лист считаются узлами дерева. Каждый атрибут элемента дерева описывается интерфейсом Attr. Еще несколько интерфейсов — CDATASection, Comment, Text, Entity,

Notation — описывают разные

типы элементов XML.

На рис. 1.2 показано начало дерева объектов, построенного по документу, приведенному в листинге 1.2. Обратите внимание на то, что текст, находящийся в теле элемента, хранится в отдельном узле дерева — потомке узла элемента. Для каждого атрибута открывающего тега тоже создается отдельный узел.

Рис. 1.2. Дерево объектов документа XML

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии