Электронный магазин на Java и XML

       

Интерфейс Node


Исходный набор методов для всего пакета 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)

<product id="bk0022" keywords="gardening, plants">

<name>Guide to Plants</name>

<description>

<paragraph>

<italics>Everything</italics>

you've ever wanted to know about plants.

</paragraph>

</description>

<price>$12.99</price>

<quanti ty_i n_stock>4</quanti ty_in_stock>

<image format="gif" width="234" height="468"

src=»images/covers/plants.gif»>

<caption>

<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, который по имени атрибута возвращает строку — значение атрибута, как в следующем примере:

String id = product.getAttribute("id")

String keywords = product.getAttribute("keywords");

Доступ к узлам первого по отношению к элементу product уровня иерархии осуществляется с помощью метода getChil dNodes. Этот метод возвращает объект, реализующий интерфейс NodeLi st. Объект NodeLi st отличается от других тем, что он содержит динамическое представление документа XML. Это значит, что если в иерархию узлов элемента product будет встроен какой-либо новый узел, это изменение автоматически отразится в объекте NodeLi st (списке узлов XML).




Содержание раздела