Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 479
Ильдар Шаукатович Хабибуллин
Корпорация Sun Microsystems реализовала интерфейсы DOM в пакетах javax.xml. parsers и org.w3c.dom, входящих в состав пакета JAXP. Воспользоваться этой реализацией очень легко:
DocumentBuilderFactory fact =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder = fact.newDocumentBuilder();
Document doc = builder.parse("ntb.xml");
Метод parse () строит дерево объектов и возвращает ссылку на него в виде объекта типа Document. В классе DocumentBuilder есть несколько методов parse ( ), позволяющих загрузить файл с адреса URL, из входного потока, как объект класса File или из источника класса InputSource.
Интерфейс Document, расширяющий интерфейс Node, описывает дерево объектов документа в целом. Интерфейс Node — основной интерфейс в описании структуры дерева — описывает узел дерева. У него есть еще один наследник — интерфейс Element, описывающий лист дерева, соответствующий элементу документа XML. Как видно из структуры наследования этих интерфейсов, и само дерево, и его лист считаются узлами дерева. Каждый атрибут элемента дерева описывается интерфейсом Attr. Еще несколько интерфейсов — CDATASection, Comment, Text, Entity, EntityReference, ProcessingInstruction, Notation — описывают разные типы элементов XML.
На рис. 28.2 показано начало дерева объектов, построенного по документу, приведенному в листинге 28.2. Обратите внимание на то, что текст, находящийся в теле элемента, хранится в отдельном узле дерева — потомке узла элемента. Для каждого атрибута открывающего тега тоже создается отдельный узел.
Рис. 28.2. Дерево объектов документа XML |
Интерфейс Node
Интерфейс Node описывает тип узла одной из следующих констант:
□ attribute_node — узел типа Attr, содержит атрибут элемента;
□ CDATA_SECTION_NODE узел типа CDADASection, содержит данные типа CDATA;
□ comment_node — узел типа Comment, содержит комментарий;
□ DOCUMENT_FRAGMENT_NODE в узле типа DocumentFragment находится фрагмент документа;
□ DOCUMENT_NODE корневой узел типа Document;
□ DOCUMENT_TYPE_NODE узел типа Document;
□ ELEMENT_NODE узел является листом дерева типа Element;
□ entity_node — в узле типа Entity хранится сущность entity;
□ ENTITY_REFERENCE_NODE в узле типа EntityReference хранится ссылка на сущность;
□ NOTATION_NODE-в узле хранится нотация типа Notation;
□ PROCESSING_INSTRUCTION_NODE- узел типа ProcessingInstruction, содержит инструкцию
по обработке;
□ TEXT_NODE в узле типа Text хранится текст.
Методы интерфейса Node описывают действия с узлом дерева:
□ public short getNodeType ( ) — возвращает тип узла;