Analysera XML DOM

De flesta webbläsare har inbyggda XML-parserar för att läsa och manipulera XML.

Parser konverterar XML till objekt som kan nås av JavaScript.

Exempel

Exempel som erbjuds av CodeW3C.com är oberoende av webbläsare och plattform. Dessa exempel kan köras i alla moderna webbläsare.

Ladda och解析 XML-fil
Ladda och解析 XML-sträng

Parser XML

Alla moderna webbläsare har inbyggda XML-parserar för att läsa och manipulera XML.

Parser läser in XML till minnet och konverterar det till ett XML DOM-objekt som kan nås av JavaScript.

Microsofts XML-parser skiljer sig från andra webbläsares解析er. Microsofts parser stöder laddning av XML-filer och XML-strängar (text), medan andra webbläsare använder en separat parser. Men alla parser innehåller funktioner för att traversera XML-träet, komma åt, infoga och ta bort noder.

I denna handledning kommer vi att förklara hur du skapar skript som kan köras i IE och andra webbläsare.

Ladda XML genom Microsofts XML-parser

Microsofts XML-parser är inbyggd i Internet Explorer 5 och högre versioner.

Följande JavaScript-kod laddar in XML-dokumentet ("books.xml) Laddar in analyseraren:

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

Kodförklaring:

  • Det första raden skapar en tom Microsoft XML-dokumentobjekt.
  • Andra raden stänger av asynkron laddning, så att analyseraren inte fortsätter att köra skriptet innan dokumentet är helt laddat
  • Tredje raden informerar analyseraren att ladda in dokumentet med namnet "books.xml"

Följande JavaScript-kod laddar in strängen med namnet "txt" i analyseraren:

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

Anmärkning:loadXML() Metoden används för att ladda strängar (text), medan load() Används för att ladda filer.

XML-parsern i Firefox och andra webbläsare

Följande JavaScript-kod laddar in XML-dokumentet ("books.xml) Laddar in analyseraren:

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

Kodförklaring:

  • Första raden skapar ett tomt XML-dokumentobjekt
  • Andra raden stänger av asynkron laddning, så att analyseraren inte fortsätter att köra skriptet innan dokumentet är helt laddat
  • Tredje raden informerar analyseraren att ladda in dokumentet med namnet "books.xml"

Följande JavaScript-kod laddar in strängen med namnet "txt" i analyseraren:

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

Kodförklaring:

  • Första raden skapar en tom XML-dokumentobjekt
  • Andra raden informerar analyseraren att ladda in strängen med namnet "txt"

Anmärkning:Internet Explorer använder loadXML() metoden för att analysera XML-strängen, medan andra webbläsare använder DOMParser objekt.

Analysera XML-fil - ett korsbrowservariantsexempel

Följande exempel laddar och analyserar ett XML-dokument ("books.xml) Laddar in XML-parsern:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load("books.xml");
  document.write("xmlDoc is loaded, ready for use");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

Fel: Åtkomst över domäner

Av säkerhetsskäl tillåter moderna webbläsare inte överdomänåtkomst.

Detta innebär att både webbsidan och den XML-fil den försöker ladda måste vara på samma server.

Exemplet som öppnas av CodeW3C.com är beläget på CodeW3C.com-domänen.

Om du planerar att använda det ovanstående exemplet på din webbsida, måste du placera XML-filen på din egen server. Annars kommer xmlDoc.load() att generera ett fel "Access is denied".

Analysera XML-sträng - ett korsbrowservariantsexempel

Följande kod laddar och analyserar en XML-sträng:

<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, etc.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }
document.write("xmlDoc is loaded, ready for use");
</script>
</body>
</html>

TIY

Anmärkning:Internet Explorer använder loadXML() metoden för att解析 XML sträng, medan andra webbläsare använder DOMParser objekt.