Список узлов XML DOM
Список узлов возвращается методом getElementsByTagName() и свойством childNodes.
Попробуйте сами — примеры
В приведенных ниже примерах используется XML-файл books.xml .
В этом примере используется метод getElementsByTagName() для получения текста из первого элемента <title> в «books.xml».
В этом примере список узлов и свойство length используются для перебора всех элементов <title> в «books.xml».
В этом примере используется список атрибутов для получения атрибута из первого элемента <book> в «books.xml».
Список узлов DOM
При использовании свойств или методов, таких как childNodes или getElementsByTagName(), возвращается объект списка узлов.
Объект списка узлов представляет собой список узлов в том же порядке, что и в XML.
Доступ к узлам в списке узлов осуществляется с порядковыми номерами, начинающимися с 0.
На следующем изображении представлен список узлов элементов <title> в « books.xml »:
Предположим, что «books.xml» загружается в переменную xmlDoc.
Этот фрагмент кода возвращает список узлов заголовков в «books.xml»:
x = xmlDoc.getElementsByTagName("title");
После выполнения приведенного выше оператора x является объектом списка узлов.
Следующий фрагмент кода возвращает текст из первого элемента <title> в списке узлов (x):
Пример
var txt = x[0].childNodes[0].nodeValue;
После выполнения приведенного выше оператора txt = «Повседневный итальянский».
Длина списка узлов
Объект списка узлов постоянно обновляется. Если элемент удаляется или добавляется, список автоматически обновляется.
Свойство длины списка узлов — это количество узлов в списке.
Этот фрагмент кода возвращает количество элементов <title> в "books.xml":
x = xmlDoc.getElementsByTagName('title').length;
После выполнения приведенного выше оператора значение x будет равно 4.
Длину списка узлов можно использовать для перебора всех элементов в списке.
Этот фрагмент кода использует свойство length для перебора списка элементов <title>:
Пример
x = xmlDoc.getElementsByTagName('title');
xLen = x.length;
for (i = 0; i <xLen; i++) {
txt += x[i].childNodes[0].nodeValue) + " ";
}
Вывод:
Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML
Объяснение примера:
- Предположим, что « books.xml » загружается в xmlDoc.
- Установите переменную x для хранения списка узлов всех элементов заголовка.
- Соберите значения текстового узла из элементов <title>
Список атрибутов DOM (карта именованных узлов)
Свойство атрибутов узла элемента возвращает список узлов атрибутов.
Это называется картой именованных узлов и похоже на список узлов, за исключением некоторых различий в методах и свойствах.
Список атрибутов постоянно обновляется. Если атрибут удаляется или добавляется, список автоматически обновляется.
Этот фрагмент кода возвращает список узлов атрибутов из первого элемента <book> в "books.xml":
x = xmlDoc.getElementsByTagName('book')[0].attributes;
После выполнения приведенного выше кода x.length = количество атрибутов, а x.getNamedItem() можно использовать для возврата узла атрибута.
Этот фрагмент кода получает значение атрибута «категория» и количество атрибутов книги:
Пример
x = xmlDoc.getElementsByTagName("book")[0].attributes;
txt = x.getNamedItem("category").nodeValue + " " + x.length;
Вывод:
cooking
1
Объяснение примера:
- Предположим, что « books.xml » загружается в xmlDoc.
- Установите переменную x для хранения списка всех атрибутов первого элемента <book>
- Получить значение атрибута «категория» и длину списка атрибутов.