Читать «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() +