Analisi XML DOM

La maggior parte dei browser ha integrato un parser XML per leggere e manipolare XML.

Il parser trasforma XML in oggetti accessibili da JavaScript.

Esempio

Gli esempi forniti da CodeW3C.com sono indipendenti dai browser e dalle piattaforme. Questi esempi possono essere eseguiti in tutti i browser moderni.

Caricare e analizzare un file XML
Caricare e analizzare una stringa XML

Analizzare XML

Tutti i browser moderni hanno integrato un parser XML per leggere e manipolare XML.

Il parser legge XML in memoria e lo trasforma in un oggetto XML DOM accessibile da JavaScript.

Il parser XML di Microsoft è diverso dai parser XML degli altri browser. Il parser di Microsoft supporta il caricamento di file XML e stringhe XML (testo), mentre altri browser utilizzano parser separati. Tuttavia, tutti i parser contengono funzioni per esplorare l'albero XML, accedere, inserire e eliminare nodi.

In questo tutorial, vi spiegheremo come creare script che possono essere eseguiti in IE e altri browser.

Caricare XML tramite il parser XML di Microsoft

Il parser XML di Microsoft è integrato in Internet Explorer 5 e versioni successive.

Il seguente frammento di JavaScript carica il documento XML ("books.xml) Carica l'analizzatore:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("books.xml");

Spiegazione del codice:

  • La prima riga crea un oggetto vuoto di Microsoft XML Document.
  • La seconda riga chiude il caricamento asincrono, assicurando che il parser non continui a eseguire lo script prima che il documento sia completamente caricato
  • La terza riga informa l'analizzatore di caricare il documento chiamato "books.xml"

Il seguente frammento di JavaScript carica la stringa chiamata txt nel parser:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);

Nota:loadXML() Il metodo serve per caricare stringhe (testo), mentre load() Utilizzato per caricare file.

l'analizzatore XML nei browser Firefox e altri

Il seguente frammento di JavaScript carica il documento XML ("books.xml) Carica l'analizzatore:

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("books.xml");

Spiegazione del codice:

  • La prima riga crea un oggetto XML documento vuoto
  • La seconda riga chiude il caricamento asincrono, assicurando che il parser non continui a eseguire lo script prima che il documento sia completamente caricato
  • La terza riga informa l'analizzatore di caricare il documento chiamato "books.xml"

Il seguente frammento di JavaScript carica la stringa chiamata txt nel parser:

parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");

Spiegazione del codice:

  • La prima riga crea un oggetto XML documento vuoto
  • La seconda riga informa l'analizzatore di caricare la stringa chiamata txt

Nota:Internet Explorer usa loadXML() metodo per analizzare una stringa XML, mentre altri browser usano DOMParser oggetto.

Analisi di un file XML - un esempio cross-browser

Il seguente esempio carica un documento XML ("books.xml) Carica l'analizzatore XML:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, ecc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load("books.xml");
  document.write("xmlDoc è caricato, pronto per l'uso");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

Errore: Accesso Across Domains

Per motivi di sicurezza, i browser moderni non permettono l'accesso cross-domain.

Questo significa che il sito web e il file XML che tenta di caricare devono essere situati sullo stesso server.

L'esempio su CodeW3C.com apre un file XML situato nel dominio di CodeW3C.com.

Se hai intenzione di utilizzare l'esempio sopra nel tuo sito web, dovrai mettere il file XML sul tuo server. Altrimenti, xmlDoc.load() genererà l'errore "Access is denied".

Analisi di una stringa XML - un esempio cross-browser

Il seguente codice carica e analizza una stringa XML:

<html>
<body>
<script type="text/javascript">
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, ecc.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }
document.write("xmlDoc è caricato, pronto per l'uso");
</script>
</body>
</html>

TIY

Nota:Internet Explorer utilizza il metodo loadXML() per analizzare stringhe XML, mentre altri browser utilizzano Oggetto DOMParser.