Исходный набор методов для всего пакета org.w3c.dom обеспечивается интерфейсом Node. В этом пакете имеется 13 интерфейсов, производных от интерфейса Node, которые представляют различные части документа. Хотя все они являются расширением Node, определенные методы этого интерфейса в некоторых производных интерфейсах не имеют смысла. В табл. 3.8 перечислены методы интерфейса Node. Обратите внимание на то, что интерпретация возвращаемых значений nodeName и nodeValue зависит от типа узла [Node — узел. — Примеч. перев. ].
Таблица 3.8. Методы интерфейса Node
Метод
Возвращаемое значение
Описание
getNodeName
NodeName
Возвращаемое значение — строка, представляющая имя Node; интерпретация зависит от типа узла
getNodeVal ue
NodeVal ue
Возвращаемое значение — строка, представляющая значение узла; интерпретация зависит от типа узла
setNodeValue
Пустое множество
getNodeType
Целочисленное значение типа short
Возвращаемое число идентифицирует тип узла согласно определению в интерфейсе Node
getParentNode
Ссылка на узел
Возвращается ссылка на узел, являющийся родительским по отношению к данному в иерархии DOM. Не для всех типов узлов существуют родительские узлы
getChildNodes
Ссылка на семейство узлов NodeList
Объекты NodeList обеспечивают доступ к упорядоченному списку ссылок на узлы
getFirstChild
Ссылка на узел
Первый дочерний узел для данного узла или null, если дочерние узлы отсутствуют
getLastChild
Ссылка на узел
Последний дочерний узел для данного или null, если дочерние узлы отсутствуют
getPrevlous Sibling
Ссылка на узел
Узел, непосредственно предшествующий данному, или null, если таковой отсутствует
getNextSibling
Ссылка на узел
Узел, непосредственно следующий за данным, или null, если таковой отсутствует
getAttributes
Ссылка на семейство NamedNodeMap
Методы NamedNodeMap обеспечивают доступ к атрибутам по имени. Возвращает null, если атрибуты отсутствуют
getOwnerDocument
Ссылка на документ
Объект Document, которому принадлежит данный узел, или null, если этот узел сам является объектом Document
<
Тип узла, с которым мы будем в основном иметь дело, называется Element; эти объекты используют интерфейс org.w3c.dom.Element. Интерфейс Element добавляет несколько методов для работы с атрибутами и именованными узлами, содержащимися в узле Element.
ПРИМЕЧАНИЕ
Для упрощения терминологии мы будем называть объекты, реализующие интерфейсы Node, Element и др., объектами Node, Element (узел, элемент) и др. соответственно. Фактический тип объектов, реализующих интерфейсы, не играет роли, так как мы будем использовать только методы интерфейсов.
Поскольку за недостатком места мы не можем предоставить формальное изложение API org.w3c.dom в том виде, в котором оно приводится на сайте консорциума W3C, исследуем по крайней мере, каким образом фрагмент каталога, соответствующий какому-то товару, представляется объектами Java. В листинге 3.5 показан код XML для одного товара; объект Element для этого кода будет содержать иерархию объектов Node, представляющих XML.
Листинг 3.5. Код XML для одного товара (catalog.xml)
<paragraph>This is the cover from the first edition.</paragraph>
</caption>
</image>
<onsale_date>
<month>4</month>
<day_of_month>4</day_of_month>
<year>1999</year>
</onsale_date>
</product>
Например, если вы выполните метод getFirstChild элемента product, то получите ссылку на узел, представляющий элемент name. Элемент name содержит дочерний узел типа Text, а значением этого узла является строка Guide to Plants (справочник по растениям).
Доступ к XML-атрибутам элемента product осуществляется с помощью метода getAttribute, который по имени атрибута возвращает строку — значение атрибута, как в следующем примере:
Доступ к узлам первого по отношению к элементу product уровня иерархии осуществляется с помощью метода getChil dNodes. Этот метод возвращает объект, реализующий интерфейс NodeLi st. Объект NodeLi st отличается от других тем, что он содержит динамическое представление документа XML. Это значит, что если в иерархию узлов элемента product будет встроен какой-либо новый узел, это изменение автоматически отразится в объекте NodeLi st (списке узлов XML).