Список Узлов

Рубрика: DOM - Объектная Модель Документа

Здравствуйте, уважаемые читатели блога okITgo.ru! Предлагаю вашему вниманию очередную статью рубрики DOM, в которой, как и обещал, подробно расскажу о списке узлов XML документа, а также об атрибутвном списке узлов или, как его еще называют, именованной карте узлов.

Список Узлов DOM

Список узлов возвращается методом getElementsByTagName() и свойством childNodes.


Попробуйте Сами – Примеры

Примеры ниже используют XML файл books.xml.
Функция loadXMLDoc(), описанная во внешнем файле JavaScript, используется для загрузки XML файла.

Получить текст из первого элемента <title>
Этот пример использует метод getElementsByTagName() для получения текста из первого элемента <title> в "books.xml".

Обход узлов в цикле, используя свойство length
Данный пример использует список узлов и свойство length для циклического обхода всех элементов <title> в "books.xml"

Получить атрибут элемента
Этот пример использует список атрибутов для получения атрибута из первого элемента <book> в "books.xml".


Список Узлов DOM

При использовании свойств или методов, наподобие childNodes или getElementsByTagName(), возвращается объект – список узлов.

Объект список узлов представляет собой список узлов в том же порядке, в каком они идут в XML.

Доступ к узлам в списке узлов можно получить с помощью порядковых номеров (индексов), начиная с 0.

Следующий фрагмент кода загружает "books.xml" в xmlDoc, используя loadXMLDoc(), и возвращает список узлов элементов title в "books.xml":

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title");

После выполнения предложений выше x является объектом списка узлов.

Следующий фрагмент кода возвращает текст из первого элемента <title> в списке узлов (x):

Пример

txt=x[0].childNodes[0].nodeValue;

Попробуйте сами »

После выполнения предложения выше, txt = “Самогон и другие напитки домашнего приготовления”.


Длина Списка Узлов

Список узлов обновляет сам себя. Если XML элемент удаляется или добавляется, список автоматически обновляется.

Свойство length списка узлов содержит количество узлов в списке.

Следующий фрагмент кода загружает "books.xml" в xmlDoc посредством loadXMLDoc() и возвращает количество элементов <title> в "books.xml":

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName(‘title’).length;

После выполнения предложения выше, x = 4.

Длина списка узлов может использоваться для циклического обхода всех элементов в списке.

Следующий фрагмент кода применяет свойство length, чтобы перебрать в цикле все элементы <title> списка:

Пример

xmlDoc=loadXMLDoc("books.xml");

//переменная x будет содержать список узлов
x=xmlDoc.getElementsByTagName(‘title’);

for (i=0;i<x.length;i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("");
}

Вывод:

Самогон и другие спиртные напитки домашнего приготовления
Арлекино и Пьеро
Ajax в действии
Библия JavaScript 4-е Издание

Попробуйте сами »

Объяснение примера:

  1. Загружаем "books.xml" в xmlDoc, используя loadXMLDoc()
  2. Инициализируем переменную x, присваивая ей список узлов всех элементов title
  3. Выводим значение текстового узла для всех элементов <title>

Список Атрибутов DOM (Именованная Карта Узла)

Свойство attributes узла элемента возвращает список атрибутивных узлов.

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

Атрибутивный список также обновляет сам себя. Если атрибут XML удаляется или, наоборот, добавляется, список автоматически обновляется.

Следующий фрагмент кода загружает "books.xml" в xmlDoc посредством loadXMLDoc() и возвращает список узлов атрибутов для первого элемента <book> в "books.xml":

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName(‘book’)[0].attributes;

После выполнения кода выше, x.length = количеству атрибутов, а x.getNamedItem() может использоваться для получения узла атрибута.

Следующий фрагмент кода отображает значение атрибута "category", а также количество атрибутов книги (book):

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book")[0].attributes;

document.write(x.getNamedItem("category").nodeValue);
document.write("" + x.length);

Вывод:

КУЛИНАРИЯ
1

Попробуйте сами »

Объяснение примера:

  1. Загружаем "books.xml" в xmlDoc, применяя loadXMLDoc()
  2. Присваиваем переменной x значение – список всех узлов-атрибутов первого элемента <book>
  3. Выводим значение первого атрибута "category"
  4. Выводим длину списка атрибутов

Надеюсь подробные объяснения приведенных примеров помогли Вам разобраться с используемыми, на первый взгляд, простыми, но иногда служащими источниками ошибок, алгоритмами. Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.