Localização de nós XML DOM

pode localizar o nó usando a relação entre os nós.

Exemplo

O exemplo a seguir usa arquivo XML books.xml.

função loadXMLDoc()localizado no JavaScript externo, usado para carregar arquivos XML.

Obter o nó pai do nó
Este exemplo usa a propriedade parentNode para obter o nó pai do nó.
Obter o primeiro filho do nó
Este exemplo usa o método firstChild() e uma função personalizada para obter o primeiro filho de um nó.

Navegação em nós DOM

Acesso aos nós na árvore de nós através das relações entre nós, geralmente chamado de navegação de nós ("navigating nodes").

No XML DOM, as relações entre nós são definidas como atributos do nó:

  • parentNode
  • childNodes
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

A seguir, uma imagem mostra books.xml Uma parte da árvore de nós e explica as relações entre nós:

Árvore de nós DOM

DOM - nó pai

Todos os nós têm apenas um nó pai. O código a seguir localiza o nó pai de <book>:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0];
document.write(x.parentNode.nodeName);

Explicação do exemplo:

  • Usando loadXMLDoc() Coloque "books.xml"carregar para xmlDoc"
  • Obter o primeiro elemento <book>
  • Output do nome do nó pai do "x"

TIY

Evitar nós de texto vazios

O Firefox e outros navegadores consideram espaços em branco vazios ou quebras de linha como nós de texto, enquanto o IE não faz isso.

Isso pode causar um problema ao usar os seguintes atributos: firstChild, lastChild, nextSibling, previousSibling.

Para evitar localizar nós de texto vazios (espaços e sinais de nova linha entre nós de elemento), usamos uma função para verificar o tipo do nó:

function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}

Com a função acima, podemos usar get_nextSibling(node) para substituir a propriedade node.nextSibling.

Explicação do código:

O tipo do nó de elemento é 1. Se o nó同级 não for nó de elemento, mova para o próximo nó até encontrar um nó de elemento. Com esse método, no IE e no Firefox, podem-se obter resultados idênticos.

Obter o primeiro elemento

O código a seguir mostra o primeiro elemento do primeiro <book>:

<html>
<head>
<script type="text/javascript" src="loadxmldoc.js">
</script>
<script type="text/javascript">
//verificar se o primeiro nó é um nó de elemento
função get_firstChild(n)
{
y=n.firstChild;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}
</script>
</head>
<body>
<script type="text/javascript">
xmlDoc=loadXMLDoc("books.xml");
x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

Saída:

title

Explicação do exemplo:

  • Usando loadXMLDoc() Coloque "books.xml"Carregar em xmlDoc"
  • Use a função get_firstChild no primeiro <book> para obter o primeiro filho do nó do elemento
  • Saída do nome do primeiro filho (nó do elemento)

TIY

Exemplo

O exemplo a seguir usa funções semelhantes:

  • firstChild: TIY
  • lastChild: TIY
  • nextSibling: TIY
  • previousSibling: TIY