Tutorial de XML

XML INÍCIO Introdução ao XML XML Como usar Árvore XML Sintaxe XML Elementos XML Atributos XML Namespaces XML Exibição XML XML HttpRequest Analisador de XML XML DOM XML XPath XML XSLT XML XQuery XML XLink Validador de XML XML DTD Esquema XML Servidor XML Exemplos XML Teste de XML Certificado XML

XML AJAX

Introdução AJAX AJAX XML Http Solicitação AJAX Resposta AJAX Arquivo XML AJAX PHP AJAX ASP AJAX Banco de dados AJAX Aplicativos AJAX Exemplos AJAX

XML DOM

Introdução ao DOM Nós DOM Acesso ao DOM Informações do nó DOM Lista de nós DOM Travessia do DOM Navegação DOM Valores de obtenção do DOM Nós de alteração do DOM Remoção de nós do DOM Substituir nós DOM DOM Criar nós DOM Adicionar nós Nós clones DOM Exemplos de DOM

Tutorial XPath

Introdução ao XPath Nós XPath Sintaxe XPath Eixos XPath Operadores XPath Exemplos de XPath

Tutorial XSLT

Introdução ao XSLT Idiomas XSL Transformação XSLT XSLT <modelo> XSLT <valor-de> XSLT <para-cada> XSLT <classificar> XSLT <if> XSLT <escolha> Aplicar XSLT XSLT no cliente XSLT no servidor XSLT Editar XML Exemplos de XSLT

Tutorial XQuery

Introdução ao XQuery Exemplo de XQuery XQuery FLWOR XQuery HTML Termos de XQuery Sintaxe XQuery Adicionar XQuery Seleção de XQuery Funções XQuery

XML DTD

Introdução DTD Blocos de construção de DTD Elementos DTD Atributos DTD Elementos DTD vs Attr Entidades DTD Exemplos de DTD

Esquema XSD

Introdução ao XSD XSD Como fazer XSD <esquema> Elementos XSD Atributos XSD Restrições XSD

Complexo XSD

Elementos XSD XSD vazio Apenas elementos XSD Somente texto XSD XSD Misto Indicadores XSD XSD <qualquer> XSD <qualquer atributo> Substituição XSD Exemplo de XSD

Dados XSD

Cadeia XSD Data XSD XSD Numérico XSD Misc Referência XSD

Serviços da Web

Serviços XML XML WSDL XML SOAP XML RDF XML RSS

Referências

Tipos de nós DOM Nó DOM Lista de nós DOM DOM NamedNodeMap Documento DOM Elemento DOM Atributo DOM Texto DOM DOM CDATA Comentário DOM DOM XMLHttpRequest Analisador de DOM Elementos XSLT Funções XSLT/XPath

Árvore de nós de travessia XML DOM


Atravessar significa percorrer ou percorrer a árvore de nós.


Atravessando a árvore de nós

Muitas vezes você quer fazer um loop em um documento XML, por exemplo: quando você quer extrair o valor de cada elemento.

Isso é chamado de "Atravessando a árvore de nós"

O exemplo abaixo 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

Exemplo explicado:

  1. Carregue a string XML em xmlDoc
  2. Obtenha os nós filhos do elemento raiz
  3. Para cada nó filho, imprima o nome do nó e o valor do nó do nó de texto


Diferenças do navegador na análise do DOM

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 como eles lidam com espaços em branco e novas linhas

DOM - Espaços em Branco e Novas Linhas

O XML geralmente contém uma nova linha ou caracteres de espaço 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 (editado pelo Bloco de Notas) contém CR/LF (nova linha) entre cada linha e dois espaços na frente de cada nó filho:

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

O Internet Explorer 9 e versões anteriores NÃO tratam espaços em branco vazios ou novas linhas como nós de texto, enquanto outros navegadores o fazem.

O exemplo a seguir produzirá o número de nós filho que o elemento raiz (de books.xml ) possui. O IE9 e versões anteriores produzirão 4 nós filhos, enquanto o IE10 e versões posteriores e outros navegadores produzirão 9 nós filhos:

Exemplo

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}

PCDATA - Dados de caracteres analisados

Os analisadores XML normalmente analisam 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 faz isso porque os elementos XML podem conter outros elementos, como neste exemplo, onde o elemento <name> contém dois outros elementos (primeiro e último):

<name><first>Bill</first><last>Gates</last></name>

e o analisador o dividirá em subelementos como este:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

Dados de Caracteres Analisados ​​(PCDATA) é um termo usado sobre dados de texto que serão analisados ​​pelo analisador XML.


CDATA - Dados de caracteres (não analisados)

O termo CDATA é usado para dados de texto que não devem ser analisados ​​pelo analisador XML.

Caracteres como "<" e "&" são ilegais em elementos XML.

"<" gerará um erro porque o analisador o interpreta como o início de um novo elemento.

"&" gerará um erro porque o analisador o interpreta como o início de uma entidade de caractere.

Algum texto, como código JavaScript, contém muitos caracteres "<" ou "&". Para evitar erros, o 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[ " e termina com " ]]> ":

<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.

Notas sobre as seções CDATA:

Uma seção CDATA não pode conter a string "]]>". Seções CDATA aninhadas não são permitidas.

O "]]>" que marca o final da seção CDATA não pode conter espaços ou quebras de linha.