Доступ к элементам DOM XML
- Предыдущая страница Узел DOM
- Следующая страница Информация о узле DOM
Через DOM, вы можете получить доступ к каждому узлу в XML-документе.
Доступ к узлу
Вы можете получить доступ к узлу тремя способами:
- Путем использования метода getElementsByTagName()
- Путем циклического (пробежного)遍ения дерева узлов
- Путем использования отношений между узлами для навигации по дереву узлов
Метод getElementsByTagName()
getElementsByTagName()
Возвращает все элементы с указанным именем тега.
Грамматика
node.getElementsByTagName("tagname");
Пример
В следующем примере возвращаются все элементы <title> под элементом x:
x.getElementsByTagName("title");
Обратите внимание, что в приведенном выше примере возвращается только элемент <title> под узлом x. Если вам нужно вернуть все элементы <title> в XML-документе, используйте:
xmlDoc.getElementsByTagName("title");
Здесь,xmlDoc
это сам документ (узел документа).
Список узлов DOM
getElementsByTagName()
方法返回节点列表(node list)。节点列表是节点的数组。
Метод возвращает список узлов (список узлов). Список узлов - это массив узлов.
x = xmlDoc.getElementsByTagName("title");
Элементы <title> можно получить через индекс. Например, чтобы получить третий <title>, можно написать так:
y = x[2];Комментарий:
Индекс начинается с 0.
Вы можете использовать
Длина списка узлов DOM
Свойство для определения длины списка узлов (число узлов). Вы можете использовать
length
Пример
Свойство для циклического перебора списка узлов: for (i = 0; i < x.length; i++) { var x = xmlDoc.getElementsByTagName("title"); }
// Здесь можно написать код обработки каждого узла
Тип узла Узлы XML-документа
documentElement
Свойство узла - это имя узла. Свойство узла - это корневой узел.
nodeName
Свойство узла - это имя узла. nodeType
Свойства - это тип узла.
Вы узнаете о свойствах узлов в следующей главе этого руководства.
Перебор узлов
Ниже приведен код, который циклически обрабатывает дочерние узлы корневого узла (также элементы):
Пример
txt = ""; x = xmlDoc.documentElement.childNodes; for (i = 0; i < x.length; i++) { // Обработать только узлы элементов (тип 1) if (x[i].nodeType == 1) { txt += x[i].nodeName + "<br>"; } }
Пример的解释:
- Предположим, что вы уже загрузили "books.xml"Загрузить в
xmlDoc
- Получить дочерние узлы корневого элемента (xmlDoc)
- Проверьте тип каждого подузла. Если тип узла равен "
1
", то это узел элемента - Если узел элемента, то выводить имя узла
Навигация по отношениям узлов
Ниже приведен код, который использует отношения узлов для навигации по дереву узлов:
Пример
x = xmlDoc.getElementsByTagName("book")[0]; xlen = x.childNodes.length; y = x.firstChild; txt = ""; for (i = 0; i < xlen; i++) { // Обработать только узлы элементов (тип 1) if (y.nodeType == 1) { txt += y.nodeName + "<br>"; } y = y.nextSibling; }
Пример的解释:
- Предположим, что вы уже загрузили "books.xml"Загрузить в
xmlDoc
- Получение дочерних узлов первого элемента book
- Установить "y" переменной на первый подузел первого элемента book
- Для каждого подузла (начиная с первого подузла "
y
" (начало): - Проверьте тип каждого подузла. Если тип узла равен "
1
" - это элементный узел - Если узел является элементом, то выводится имя этого узла
- Установить "
y
" переменная устанавливается на следующий同级 узел, и цикл запускается снова
- Предыдущая страница Узел DOM
- Следующая страница Информация о узле DOM