Список узлов DOM XML

getElementsByTagName() метод и childNodes свойство можно получить список узлов.

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

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

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

Узлы списка NodeList можно получить по индексу, начинающемуся с 0.

На следующем рисунке показано: books.xml Список узлов элемента <title>:

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

Предположим, что "books.xml" уже загружен в переменную xmlDoc.

Этот фрагмент кода возвращает список узлов элемента "title" из файла "books.xml":

x = xmlDoc.getElementsByTagName("title");

После выполнения предыдущих команд, x становится NodeList объектом.

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

Пример

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

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

После выполнения предыдущих команд txt = "Яша тань чи".

Длина узлов

Объект NodeList будет поддерживать自身的 обновление. Если удалятся или добавятся элементы, список автоматически обновится.

длина списка узлов length Атрибуты это количество узлов в списке.

Этот код возвращает количество элементов <title> в "books.xml":

x = xmlDoc.getElementsByTagName('title').length;

После выполнения上面的 строкиx равна 5.

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

Этот код использует length Цикл свойств для遍历 списка элементов <title>:

Пример

x = xmlDoc.getElementsByTagName('title');
xLen = x.length;
for (i = 0; i < xLen; i++) {
    txt += (x[i].childNodes[0].nodeValue) + " ";
}

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

Пример объяснения:

  1. Предположим books.xml был загружен в xmlDoc Центр
  2. Установить переменную x для сохранения списка узлов всех элементов title
  3. Получение значения текстового узла из элемента <title>

Список свойств DOM (карта именованных узлов)

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

Это называется named node map (карта именованных узлов), как и список узлов, но методы и атрибуты различаются.

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

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

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

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

Этот код получает значение атрибута "category" первого книги и количество атрибутов:

Пример

x = xmlDoc.getElementsByTagName("book")[0].attributes;
txt = x.getNamedItem("category").nodeValue + " " + x.length;

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

Пример объяснения:

  1. Предположим books.xml загружен в xmlDoc Центр
  2. Установка переменной x для сохранения списка всех атрибутов первого элемента <book>
  3. Получение значения атрибута "category" и длины списка атрибутов