Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_XML.doc
Скачиваний:
16
Добавлен:
03.05.2019
Размер:
3.94 Mб
Скачать

7.4. Использование объекта NodeList

Свойство childNodes узла содержит набор дочерних узлов текущего узла, не являющихся атрибутами. (Доступ к дочерним узлам-атрибутам осуществляется через свойство attribute узла.) Определенный тип набора, который содержит свойство childNodes, носит название объекта NodeList.

Чтобы извлечь определенный дочерний узел из объекта NodeList, можно обратиться к его методу item, указав при этом индекс дочернего узла, который необходимо получить (индексы отсчитываются с нуля). Например, обращение к следующему методу позволяет получить первый дочерний узел, принадлежащий узлу Element:

FirstNode = Element.childNodes.item(0);

Однако, поскольку item является методом по умолчанию объекта NodeList, его можно опустить, как это делалось в предыдущих примерах в этой главе:

FirstNode = Element.childNodes(0);

В таблице 5.23 представлены свойства и методы, предоставляемые объектом NodeList.

Таблица 5.23

Свойство и методы, поддерживаемые групповым объектом NodeList. Доступ к объекту NodeList осуществляется через свойство childNodes узла

Свойство NodeList

Свойство

Описание

Пример

length

Количество узлов, содержащихся в наборе

NodeCount = Element.childNodes.length;

Метод NodeList

Метод

Описание

Пример

item (индекс, отсчитываемый с 0) (метод по умолчанию)

Возвращает узел в соответствии с заданным индексом, при этом 0 соответствует первому узлу

SecondChild = Element.childNodes.item (1);

или

SecondChild = Element.childNodes (1);

reset()

Устанавливает внутренний указатель на позицию перед первым узлом в наборе, чтобы последующий вызов nextNode возвращал первый узел

Element.childNodes.reset ();

nextNode()

Возвращает следующий узел в наборе в соответствии с позицией внутреннего указателя

Element.childNodes.reset ();

FirstNode = Element.childNodes.nextNode();

7.5. Извлечение символьных данных элемента

В сценарии, представленном в Листинге 1.28, свойство text каждого из дочерних элементов (TITLE, AUTHOR, BINDING, PAGES и PRICE) используется для получения символьных данных элемента. Например, следующий оператор используется для извлечения символьных данных элемента TITLE:

title.innerText=Document.documentElement.childNodes(0).text;

Свойство text показывает содержимое элемента в текущем узле, плюс текстовое содержимое любого подчиненного элемента. Оно хорошо подходит для извлечения символьных данных элемента в том случае, если элемент не имеет дочерних элементов (например, элемент TITLE). Однако, если элемент содержит один или более дочерних элементов помимо символьных данных, как в приведенном ниже примере, свойство text возвращает весь текст (в данном случае, “Руслан и Людмила. Посвящение”).

<TITLE>Руслан и Людмила

<SUBTITLE>Посвящение</SUBTITLE>

</TITLE>

Чтобы получить только символьные данные элемента TITLE, необходимо осуществить доступ к дочернему узлу Text.

Как видно из таблицы 5.20, свойство nodeValue узла Element имеет значение null. Если элемент содержит символьные данные, то они хранятся в дочернем узле Text, и их можно получить через свойство nodeValue узла Text. Например, чтобы получить данные элемента TITLE (“Руслан и Людмила”), из предыдущего примера, без символьных данных, принадлежащих элементу SUBTITLE, нужно воспользоваться следующим выражением:

Element.firstChild.nodeValue

(Поскольку символьные данные элемента TITLE предшествуют подчиненному элементу, они представляются первым дочерним узлом, и их можно извлечь с помощью свойства firstChild.)

Если символьные данные элемента смешаны с дочерними элементами, комментариями или инструкциями по обработке, каждый отдельный блок символьных данных представляется собственным дочерним узлом Text. Например, приведенный ниже элемент ITEM имеет три дочерних узла, расположенных в следующем порядке: узел TEXT, представляющий первый блок символьных данных; узел ELEMENT, представляющий дочерний элемент SUB-ITEM; еще один узел TEXT, представляющий второй блок символьных данных:

<ITEM>

блок символьных данных № 1 /* узел TEXT */

<SUB-ITEM>текст подчиненного элемента</SUB-ITEM>

блок символьных данных № 2/* узел TEXT */

</IТЕМ>

Метод и свойство, предоставляемые узлом Text, приведены в таблице 5.24. Другие доступные свойства можно найти в перечне общих свойств в таблице 5.21.

Таблица 5.24

Полезные свойство и методы, поддерживаемые узлами Text.

Свойство узла Text

Свойство

Описание

Пример

length

Количество символов в тексте узла

CharacterCount = Text.length;

Метод узла Text

Метод

Описание

Пример

substringData (char-offset, num-chars)

Возвращает строку, содержащую заданное число символов из текстового содержимого узла, начиная с указанной параметром смещения позиции

Substring = Text.substringData(2, 3);

(Возвращает третий, четвертый и пятый символы из содержимого элемента Text)