Esercitazione XML

XML CASA Introduzione XML XML Come usare Albero XML Sintassi XML Elementi XML Attributi XML Spazi dei nomi XML Visualizzazione XML Richiesta HTTP XML Analizzatore XML XML DOM XPath XML XML XSLT XQuery XML XML XLink Validatore XML DTD XML Schema XML Server XML Esempi XML Quiz XML Certificato XML

XML AJAX

Introduzione AJAX AJAX XMLHttp Richiesta AJAX Risposta dell'AJAX File XML AJAX AJAX PHP AJAX ASP Database AJAX Applicazioni AJAX Esempi AJAX

XML DOM

DOM Introduzione Nodi DOM Accesso DOM Informazioni sul nodo DOM Elenco dei nodi DOM DOM attraversando Navigazione DOM DOM Ottieni valori Nodi di modifica DOM DOM Rimuovere i nodi DOM Sostituisci nodi DOM Crea nodi DOM Aggiungi nodi Clonazione dei nodi DOM Esempi DOM

Esercitazione XPath

Introduzione a XPath Nodi XPath Sintassi XPath Assi XPath Operatori XPath Esempi di XPath

Esercitazione XSLT

Introduzione a XSLT Lingue XSL Trasformazione XSLT XSLT <modello> XSLT <valore-di> XSLT <per-ciascuno> XSLT <ordina> XSLT <se> XSLT <scegli> Applicare XSLT XSLT sul Cliente XSLT sul server XSLT Modifica XML Esempi XSLT

Esercitazione XQuery

Introduzione a XQuery Esempio XQuery XQuery FLWOR XQuery HTML Termini di XQuery Sintassi XQuery Aggiungi XQuery XQuery Seleziona Funzioni XQuery

DTD XML

Introduzione alla DTD Blocchi di costruzione DTD Elementi DTD Attributi DTD Elementi DTD vs Attr Entità DTD Esempi di DTD

Schema XSD

Introduzione all'XSD XSD Come fare per XSD <schema> Elementi XSD Attributi XSD Restrizioni XSD

Complesso XSD

Elementi XSD XSD vuoto Solo elementi XSD Solo testo XSD XSD misto Indicatori XSD XSD <qualsiasi> XSD <qualsiasi attributo> Sostituzione XSD Esempio XSD

Dati XSD

Stringa XSD Data XSD Numerico XSD XSD Varie Riferimento XSD

Servizi Web

Servizi XML XML WSDL SAPONE XML XML RDF RSS XML

Riferimenti

Tipi di nodi DOM Nodo DOM Elenco nodi DOM DOM NamedNodeMap Documento DOM Elemento DOM Attributo DOM Testo DOM DOM CDATA Commento DOM DOM XMLHttpRichiesta Analizzatore DOM Elementi XSLT Funzioni XSLT/XPath

Albero del nodo trasversale XML DOM


Attraversare significa scorrere o viaggiare attraverso l'albero dei nodi.


Attraversare l'albero dei nodi

Spesso si desidera eseguire il loop di un documento XML, ad esempio: quando si desidera estrarre il valore di ogni elemento.

Questo è chiamato "Attraversamento dell'albero dei nodi"

L'esempio seguente scorre tutti i nodi figlio di <book> e ne mostra i nomi e i valori:

Esempio

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

Produzione:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005

Esempio spiegato:

  1. Carica la stringa XML in xmlDoc
  2. Ottieni i nodi figlio dell'elemento radice
  3. Per ogni nodo figlio, emetti il ​​nome del nodo e il valore del nodo del nodo di testo


Differenze del browser nell'analisi DOM

Tutti i browser moderni supportano la specifica W3C DOM.

Tuttavia, ci sono alcune differenze tra i browser. Una differenza importante è:

  • Il modo in cui gestiscono gli spazi bianchi e le nuove linee

DOM - Spazi bianchi e nuove linee

XML contiene spesso una nuova riga, o caratteri di spazio vuoto, tra i nodi. Questo è spesso il caso quando il documento viene modificato da un semplice editor come Blocco note.

L'esempio seguente (modificato da Blocco note) contiene CR/LF (nuova riga) tra ogni riga e due spazi davanti a ciascun nodo figlio:

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

Internet Explorer 9 e versioni precedenti NON trattano gli spazi vuoti o le nuove righe come nodi di testo, a differenza di altri browser.

L'esempio seguente produrrà il numero di nodi figlio dell'elemento root (of books.xml ). IE9 e versioni precedenti produrranno 4 nodi figlio, mentre IE10 e versioni successive e altri browser genereranno 9 nodi figlio:

Esempio

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

PCDATA - Dati caratteri analizzati

I parser XML normalmente analizzano tutto il testo in un documento XML.

Quando un elemento XML viene analizzato, viene analizzato anche il testo tra i tag XML:

<message>This text is also parsed</message>

Il parser lo fa perché gli elementi XML possono contenere altri elementi, come in questo esempio, dove l'elemento <name> contiene altri due elementi (primo e ultimo):

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

e il parser lo suddividerà in sotto-elementi come questo:

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

Parsed Character Data (PCDATA) è un termine utilizzato per i dati di testo che verranno analizzati dal parser XML.


CDATA - Dati carattere (non analizzati).

Il termine CDATA viene utilizzato per i dati di testo che non devono essere analizzati dal parser XML.

Caratteri come "<" e "&" sono illegali negli elementi XML.

"<" genererà un errore perché il parser lo interpreta come l'inizio di un nuovo elemento.

"&" genererà un errore perché il parser lo interpreta come l'inizio di un'entità carattere.

Alcuni testi, come il codice JavaScript, contengono molti caratteri "<" o "&". Per evitare errori il codice dello script può essere definito come CDATA.

Tutto all'interno di una sezione CDATA viene ignorato dal parser.

Una sezione CDATA inizia con " <![CDATA[ " e termina con " ]]> ":

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

Nell'esempio sopra, tutto all'interno della sezione CDATA viene ignorato dal parser.

Note sulle sezioni CDATA:

Una sezione CDATA non può contenere la stringa "]]>". Le sezioni CDATA annidate non sono consentite.

Il "]]>" che segna la fine della sezione CDATA non può contenere spazi o interruzioni di riga.