Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 481

Ильдар Шаукатович Хабибуллин

□ public Attr createAttributeNS(String uri, String name) — аналогично;

□ public Comment createComment(String comment) — создает узел-комментарий;

□ public DocumentFragment createDocumentFragment() — создает пустой документ — фрагмент данного документа с целью его дальнейшего заполнения;

□ public Node importNode(Node importedNode, boolean deep) — вставляет созданный узел, а значит, и все его поддерево, в дерево документа. Этим методом можно соединить два дерева объектов. Если второй аргумент равен true, то рекурсивно вставляется все поддерево.

Интерфейс Element

Интерфейс Element добавляет к методам своего предка Node методы работы с атрибутами открывающего тега элемента XML и методы, позволяющие обратиться к вложенным элементам. Только один метод

public String getTagName();

дает сведения о самом элементе, а именно имя элемента.

Прежде чем получить значение атрибута с именем name, надо проверить его наличие методами

public boolean hasAttribute(String name);

public boolean hasAttributeNS(String uri, String name);

Второй из этих методов учитывает пространство имен с именем uri, записанным в виде строки URI; имя name должно быть полным, с префиксом.

Получить атрибут в виде объекта типа Attr или его значение в виде строки по имени name с учетом префикса или без него можно методами

public Attr getAttributeNode(String name);

public Attr getAttributeNodeNS(String uri, String name);

public String getAttribute(String name);

public String getAttributeNS(String uri, String name);

Удалить атрибут можно методами

public Attr removeAttributeNode(Attr name);

public void removeAttribute(String name);

public void removeAttributeNS(String uri, String name);

Установить значение атрибута можно методами

public void setAttribute(String name, String value);

public void setAttributeNS(String uri, String name, String value);

Добавить атрибут в качестве потомка можно методами

public Attr setAttributeNode(String name);

public Attr setAttributeNodeNS(Attr name);

Два метода позволяют получить список узлов-потомков:

public NodeList getElrmentsByTagName(String name);

public NodeList getElrmentsByTagNameNS(String uri, String name);

Итак, методы перечисленных интерфейсов позволяют перемещаться по дереву, менять структуру дерева, просматривать информацию, хранящуюся в узлах и листьях дерева, и изменять ее.

Приведем пример работы с деревом объектов, построенным по документу XML. Добавим в адресную книжку листинга 28.2 новый рабочий или домашний телефон Сидоровой. Это действие записано в листинге 28.11.

Листинг 28.11. Анализ адресной книжки с помощью DOM API

import org.w3c.dom.*; import javax.xml.parsers.*; import org.xml.sax.*;

class ErrHand implements ErrorHandler{

public void warning(SAXParseException ex){ System.err.println("Warning: " + ex); System.err.println("line = " + ex.getLineNumber() +

" col = " + ex.getColumnNumber());

}

public void error(SAXParseException ex){ System.err.println("Error: " + ex); System.err.println("line = " + ex.getLineNumber() +

" col = " + ex.getColumnNumber());

}

public void fatalError(SAXParseException ex){ System.err.println("Fatal error: " + ex); System.err.println("line = " + ex.getLineNumber() +