Доступ к элементам XML DOM
- Предыдущая страница Свойства и методы DOM
- Следующая страница Информация о узле DOM
Через DOM, вы можете получить доступ к каждому узлу в документе XML.
Пример
Ниже приведен пример с файлом XML books.xml.
Функция loadXMLDoc()находится во внешнем JavaScript, используется для загрузки файла XML.
- Доступ к узлу через индекс в списке узлов
- В этом примере используется метод getElementsByTagname() для получения третьего элемента <title> в "books.xml".
- Циклическое (пробежное)пробежное)遍ение узлов с помощью атрибута length
- В этом примере используется атрибут length для циклического (пробежного)遍ения всех элементов <title> в "books.xml".
- Просмотр типа узла элемента
- В этом примере используется атрибут nodeType для получения типа узла корневого элемента в "books.xml".
- Циклическое (пробежное)遍ение элементов
- В этом примере используется атрибут nodeType для обработки элементов в "books.xml".
- Циклическое (пробежное)遍ение элементов с помощью отношений узлов
- В этом примере используется атрибут nodeType и атрибут nextSibling для обработки элементов в "books.xml".
Доступ к узлу
Вы можете получить доступ к узлу тремя способами:
- путем использования метода getElementsByTagName()
- путем циклического (пробежного)遍ения дерева узлов
- путем использования отношений между узлами для навигации по дереву узлов
Метод getElementsByTagName()
getElementsByTagName() возвращает все элементы с указанным именем тега.
грамматика
node.getElementsByTagName("tagname");
Пример
Ниже приведен пример, который возвращает все элементы <title> под элементом x:
x.getElementsByTagName("title");
Обратите внимание, что приведенный выше пример возвращает только элементы <title> под узлом x. Чтобы вернуть все элементы <title> в XML-документе, используйте:
xmlDoc.getElementsByTagName("title");
В этом случае xmlDoc本身就是 документ (узел документа).
DOM Node List
метод getElementsByTagName() возвращает список узлов (список узлов). Список узлов - это массив узлов.
Ниже приведен код, который использует loadXMLDoc() Установите "books.xml"Загрузите xmlDoc в переменную x, затем храните список узлов <title>:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title");
Вы можете получить доступ к элементам <title> в x через индекс. Чтобы получить доступ к третьему <title>, вы можете написать:
y=x[2];
Комментарий:Индекс начинается с 0.
В более поздних главах этого руководства вы узнаете больше о списке узлов.
DOM Node List Length
Атрибут length определяет длину списка узлов (т.е. количество узлов).
Вы можете циклически пройти через список узлов, используя атрибут length:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title"); for (i=0;i<x.length;i++) { document.write(x[i].childNodes[0].nodeValue); document.write("<br />"); }
Пример объяснения:
- Используйте loadXMLDoc() Установите "books.xml"Загрузите xmlDoc
- Получите все элементы <title>
- Вывод значений текстовых узлов каждого элемента <title>
Node Type
XML документ documentElement свойство - это корневой узел.
свойства узла nodeName свойство - это имя узла.
свойства узла nodeType Свойства - это тип узла.
В следующей главе этого руководства вы узнаете больше о свойствах узлов.
Пройдемся по узлам
Ниже приведен код, который циклически проходит через подузлы корневого узла, которые также являются элементами:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { if (x[i].nodeType==1) {//Обработка только узлов элемента (тип 1) document.write(x[i].nodeName); document.write("<br />"); } }
Пример объяснения:
- Используя loadXMLDoc() Установите "books.xml"Загрузите xmlDoc"
- Получите подузлы корневого элемента
- Проверьте тип узла каждого подузла. Если тип узла равен "1", то это элементный узел
- Если узел элемента, то выводите имя узла
Навигация по узлам с использованием отношений узлов
Ниже приведен код, который использует отношения узлов для навигации по дереву узлов:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0].childNodes; y=xmlDoc.getElementsByTagName("book")[0].firstChild; for (i=0;i<x.length;i++) { if (y.nodeType==1) {//Обработка только узлов элемента (тип 1) document.write(y.nodeName + "<br />"); } y=y.nextSibling; }
- Используя loadXMLDoc() Установите "books.xml"Загрузите xmlDoc"
- Получите первый подузел элемента "book"
- Установите переменную "y" в первый подузел первого элемента "book"
- Проверьте тип каждого подузла, если тип узла равен "1", то это узел элемента
- Если узел элемента, то выводите имя узла
- Установите переменную "y" в следующий同级 узел и запустите цикл снова
- Предыдущая страница Свойства и методы DOM
- Следующая страница Информация о узле DOM