Acessar Nó DOM XML

Através do DOM, você pode acessar cada nó no documento XML.

Acessar nó

Você pode acessar os nós de três maneiras:

  • usando o método getElementsByTagName()
  • através de loop (varredura) na árvore de nós
  • navegando pelo relacionamento dos nós na árvore de nós

Método getElementsByTagName()

getElementsByTagName() retorna todos os elementos com o nome de tag especificado.

Sintaxe

node.getElementsByTagName("tagname");

Exemplo

O exemplo a seguir retorna todos os elementos <title> sob o nó x:

x.getElementsByTagName("title");

Atenção, o exemplo acima retorna apenas os elementos <title> sob o nó x. Para retornar todos os elementos <title> do documento XML, use:

xmlDoc.getElementsByTagName("title");

Aqui,xmlDoc é o próprio documento (nó do documento).

Lista de nós DOM

getElementsByTagName() 方法返回节点列表(node list)。节点列表是节点的数组。

O método retorna uma lista de nós (node list). A lista de nós é um array de nós.

x = xmlDoc.getElementsByTagName("title");

Pode acessar o elemento <title> no x através do número de índice. Se precisar acessar o terceiro <title>, você pode escrever assim:

y = x[2];Notas:

Experimente pessoalmente

O índice começa em 0.

Você pode usar Comprimento da lista de nós DOM

O atributo define o comprimento da lista de nós (número de nós). Você pode usar length

Exemplo

O atributo para percorrer a lista de nós:
for (i = 0; i < x.length; i++) {
  var x = xmlDoc.getElementsByTagName("title");
  }

Experimente pessoalmente

// Aqui pode ser escrito o código para processar cada nó

Tipos de nó O nó do documento de XML documentElement

O atributo é o nome do nó. O atributo é o nó raiz. nodeName

O atributo é o nome do nó. nodeType Os atributos são o tipo do nó.

Você aprenderá mais sobre atributos de nó no próximo capítulo deste tutorial.

Experimente pessoalmente

Percorrer nós

O código a seguir percorre os nós filhos do nó raiz (também são nós de elemento):

Exemplo

txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length; i++) {
  // Processar apenas nós de elemento (tipo 1)
  if (x[i].nodeType == 1) {
    txt += x[i].nodeName + "<br>";
  }
}

Experimente pessoalmente

Explicação do exemplo:

  1. Supondo que você já tenha carregado "books.xml"Carregar em xmlDoc
  2. Obter os nós filhos do nó raiz (xmlDoc)
  3. Verificar o tipo de nó de cada subnó. Se o tipo de nó for "1", então é nó de elemento
  4. Se for nó de elemento, então exibe o nome do nó

Navegação de relações de nós

O código a seguir navega pelo grafo de nós utilizando as relações entre nós:

Exemplo

x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i < xlen; i++) {
  // Somente processar nós de elemento (tipo 1)
  if (y.nodeType == 1) {
    txt += y.nodeName + "<br>";
  }
  y = y.nextSibling;
}

Experimente pessoalmente

Explicação do exemplo:

  1. Supondo que você já tenha carregado "books.xml"Carregar em xmlDoc
  2. Obter o nó filho do primeiro elemento 'book'
  3. Definir a variável "y" para o primeiro subnó do elemento "book"
  4. Para cada subnó (começando pelo primeiro subnó "y" começa):
  5. Verificar o tipo de nó de cada subnó. Se o tipo de nó for "1" então é nó de elemento
  6. Se for nó de elemento, saída do nome do nó
  7. Definir "y" Variável definida para o próximo nó同级 e executar o loop novamente