Доступ к элементам DOM XML

Через 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>";
  }
}

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

Пример的解释:

  1. Предположим, что вы уже загрузили "books.xml"Загрузить в xmlDoc
  2. Получить дочерние узлы корневого элемента (xmlDoc)
  3. Проверьте тип каждого подузла. Если тип узла равен "1", то это узел элемента
  4. Если узел элемента, то выводить имя узла

Навигация по отношениям узлов

Ниже приведен код, который использует отношения узлов для навигации по дереву узлов:

Пример

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;
}

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

Пример的解释:

  1. Предположим, что вы уже загрузили "books.xml"Загрузить в xmlDoc
  2. Получение дочерних узлов первого элемента book
  3. Установить "y" переменной на первый подузел первого элемента book
  4. Для каждого подузла (начиная с первого подузла "y" (начало):
  5. Проверьте тип каждого подузла. Если тип узла равен "1" - это элементный узел
  6. Если узел является элементом, то выводится имя этого узла
  7. Установить "y" переменная устанавливается на следующий同级 узел, и цикл запускается снова