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

XML DOM - Nodi di navigazione


I nodi possono essere esplorati utilizzando le relazioni dei nodi.

×

Header


Navigazione nei nodi DOM

L'accesso ai nodi nell'albero dei nodi tramite la relazione tra i nodi è spesso chiamato "nodi di navigazione".

Nel DOM XML, le relazioni dei nodi sono definite come proprietà dei nodi:

  • parentNode
  • childNodes
  • Primogenito
  • ultimo bambino
  • prossimoFratello
  • precedenteFratello

L'immagine seguente illustra una parte dell'albero dei nodi e la relazione tra i nodi in books.xml :

Albero dei nodi


DOM - Nodo padre

Tutti i nodi hanno esattamente un nodo padre. Il codice seguente passa al nodo padre di <book>:

Esempio

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("book")[0];
    document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}

Esempio spiegato:

  1. Carica " books.xml " in xmlDoc
  2. Ottieni il primo elemento <book>
  3. Emetti il ​​nome del nodo del nodo padre di "x"


Evita nodi di testo vuoti

Firefox e alcuni altri browser tratteranno gli spazi vuoti o le nuove righe come nodi di testo, Internet Explorer no.

Ciò causa un problema quando si utilizzano le proprietà: firstChild, lastChild, nextSibling, previousSibling.

Per evitare di navigare verso nodi di testo vuoti (spazi e caratteri di nuova riga tra i nodi degli elementi), utilizziamo una funzione che controlla il tipo di nodo:

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

La funzione precedente consente di utilizzare get_nextSibling( node ) invece della proprietà node .nextSibling.

Codice spiegato:

I nodi elemento sono di tipo 1. Se il nodo di pari livello non è un nodo elemento, si sposta ai nodi successivi finché non viene trovato un nodo elemento. In questo modo, il risultato sarà lo stesso sia in Internet Explorer che in Firefox.


Ottieni il primo elemento figlio

Il codice seguente mostra il primo nodo elemento del primo <libro>:

Esempio

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
    document.getElementById("demo").innerHTML = x.nodeName;
}

//check if the first node is an element node
function get_firstChild(n) {
    var y = n.firstChild;
    while (y.nodeType != 1) {
        y = y.nextSibling;
    }
    return y;
}
</script>

</body>
</html>

Produzione:

title

Esempio spiegato:

  1. Carica " books.xml " in xmlDoc
  2. Utilizzare la funzione get_firstChild sul primo nodo elemento <book> per ottenere il primo nodo figlio che è un nodo elemento
  3. Genera il nome del nodo del primo nodo figlio che è un nodo elemento

Altri esempi


Questo esempio utilizza il metodo lastChild() e una funzione personalizzata per ottenere l'ultimo nodo figlio di un nodo


Questo esempio utilizza il metodo nextSibling() e una funzione personalizzata per ottenere il nodo di pari livello successivo di un nodo


Questo esempio utilizza il metodo previousSibling() e una funzione personalizzata per ottenere il nodo di pari livello precedente di un nodo