XML DOM NodeList

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

Пример

Ниже приведен пример использования файла XML books.xml.

Функция loadXMLDoc()Расположен вне JavaScript и используется для загрузки файла XML.

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

DOM NodeList

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

Объект NodeList представляет список узлов, сохраняя ту же последовательность, что и в XML.

Использование индекса, начинающегося с 0, для доступа к узлам списка.

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

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

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

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");

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

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

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

После выполнения предыдущего предложения txt = "Everyday Italian".

TIY

Длина списка узлов

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

Атрибут length списка узлов является количеством узлов в списке.

Ниже приведен фрагмент кода, который использует loadXMLDoc() Установить "books.xml"Загрузить xmlDoc, и вернуть количество элементов <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("<br />");
}

Вывод:

Harry Potter
Everyday Italian
XQuery Kick Start
Learning XML

Пример的解释:

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

TIY

DOM Attribute List (Named Node Map)

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

Это называется Named Node Map, кроме некоторых различий в методах и свойствах, он похож на список узлов.

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

Ниже приведен фрагмент кода, который использует loadXMLDoc() Загрузить "books.xml" в xmlDoc и из "books.xmlВозвращается список узлов свойств первого <book> в "

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book')[0].attributes;

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

Ниже приведен фрагмент кода, который возвращает значение свойства "category" книги и количество ее свойств:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].attributes;
document.write(x.getNamedItem("category").nodeValue);
document.write("<br />" + x.length);

Вывод:

children
1

Пример的解释:

  • Используя loadXMLDoc() Установить "books.xml"Загрузить xmlDoc"
  • Установить переменную x как список всех свойств первого элемента <book>
  • Вывод значения из свойства "category"
  • Вывод длины списка свойств

TIY