Atravessando meio looping através ou que viajam através da árvore de nós.
Atravessando o nó de árvore
Muitas vezes, você quer fazer um loop um documento XML, por exemplo: quando você deseja extrair o valor de cada elemento.
Isso é chamado de "Traversing the node tree"
O exemplo a seguir percorre todos os nós filhos de <book>, e exibe seus nomes e valores:
Exemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";
parser = new DOMParser();
xmlDoc
= parser.parseFromString(text,"text/xml");
// documentElement always
represents the root node
x = xmlDoc.documentElement.childNodes;
for (i =
0; i < x.length ;i++) {
txt += x[i].nodeName + ": " +
x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>
</body>
</html>
Saída:
title: Everyday Italian
author: Giada De Laurentiis
year: 2005
Tente você mesmo " Exemplo explicou:
- Carregar a string XML em xmlDoc
- Obter os nós filhos do elemento raiz
- Para cada nó filho, a saída do nome do nó e o valor do nó do nó de texto
Diferenças navegador no DOM de análise
Todos os navegadores modernos suportam a especificação W3C DOM.
No entanto, existem algumas diferenças entre os navegadores. Uma diferença importante é:
- A maneira de lidar com espaços em branco e novas linhas
DOM - White Spaces e novas linhas
XML geralmente contém nova linha, ou espaços em branco, entre os nós. Este é frequentemente o caso quando o documento é editado por um editor simples, como o Bloco de Notas.
O exemplo a seguir (edited by Notepad) contém CR / LF (new line) entre cada linha e dois lugares na frente de cada nó filho:
<book>
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
Internet Explorer 9 e anteriores não tratá-branco-espaços vazios, ou novas linhas como nós de texto, enquanto outros navegadores fazer.
O exemplo a seguir irá imprimir o número de nós filho do elemento raiz (of books.xml ) tem. IE9 e anteriores vontade saída 4 nós filho, enquanto IE10 e versões posteriores, e outros navegadores irá imprimir 9 nós filho:
Exemplo
function myFunction(xml) {
var xmlDoc = xml.responseXML;
x =
xmlDoc.documentElement.childNodes;
document.getElementById("demo").innerHTML =
"Number
of child nodes: " + x.length;
}
Tente você mesmo " PCDATA - Parsed dados de caracteres
analisadores XML normalmente analisar todo o texto em um documento XML.
Quando um elemento XML é analisado, o texto entre as tags XML também é analisado:
<message>This text is also parsed</message>
O analisador é que isto porque os elementos XML podem conter outros elementos, como neste exemplo, onde o <name> elemento contém dois outros elementos (first and last) :
<name><first>Bill</first><last>Gates</last></name>
eo analisador irá dividi-lo em sub-elementos como este:
<name>
<first>Bill</first>
<last>Gates</last>
</name>
Dados de caracteres processadas que são (PCDATA) é um termo usado sobre dados de texto que será analisado pelo analisador XML.
CDATA - (Unparsed) dados de caracteres
O termo CDATA é usada sobre dados de texto que não deve ser analisados pelo analisador XML.
Personagens como "<" e "&" são ilegais em elementos XML.
"<" Irá gerar um erro porque o analisador interpreta como o início de um novo elemento.
"&" Irá gerar um erro porque o analisador interpreta como o início de uma entidade de caráter.
Algum texto, como o código JavaScript, contém uma grande quantidade de "<" ou "&" caracteres. Para evitar erros de código de script pode ser definido como CDATA.
Tudo dentro de uma seção CDATA é ignorado pelo analisador.
Uma seção CDATA começa com " <![CDATA[ " and ends with " ]]> " :
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0)
{
return 1;
} else
{
return 0;
}
}
]]>
</script>
No exemplo acima, tudo dentro da seção CDATA é ignorado pelo analisador.
Notes on CDATA sections:
Uma seção CDATA não pode conter a string "]]>" . seções Nested CDATA não são permitidos.
O "]]>" que marca o final da seção CDATA não pode conter espaços ou quebras de linha.