Analyser XML DOM

De fleste browsere har indbygget XML-parser til læsning og manipulation af XML.

Parser konverterer XML til objekter, der kan tilgås af JavaScript.

Eksempel

Eksemplerne på CodeW3C.com er uafhængige af browser og platform. Disse eksempler kan køres i alle moderne browsere.

Indlæs og analyser XML-filer
Indlæs og analyser XML-strenge

Analyser XML

Alle moderne browsere har indbygget XML-parser til læsning og manipulation af XML.

Parser læser XML ind i hukommelsen og konverterer det til et XML DOM-objekt, der kan tilgås af JavaScript.

Microsofts XML-parser adskiller sig fra andre browsere. Microsofts parser understøtter indlæsning af XML-filer og XML-strenge (tekst), mens andre browsere bruger separate parser. Dog indeholder alle parser funktioner til at traversere XML-træet, tilgå, indsætte og slette knuder.

I denne vejledning vil vi forklare, hvordan du opretter scripts, der kan køre i IE og andre browsere.

Indlæs XML ved hjælp af Microsofts XML-parser

Microsofts XML-parser er indbygget i Internet Explorer 5 og højere versioner.

Nedenstående JavaScript-segment indlæser XML-dokumentet ("books.xml) Indlæser parseren:

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

Kodeforklaring:

  • Første linje opretter en tom Microsoft XML-dokumentobjekt.
  • Anden linje lukker asynkron indlæsning, så parseren ikke fortsætter med at køre scriptet, før dokumentet er fuldt indlæst
  • Tredje linje informerer parseren om at indlæse dokumentet navngivet "books.xml"

Nedenstående JavaScript-segment indlæser strengen navngivet txt i parseren:

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

Bemærk:loadXML() metoden bruges til at indlæse strenge (tekst), og load() Bruges til at indlæse filer.

XML-parseren i Firefox og andre browsere

Nedenstående JavaScript-segment indlæser XML-dokumentet ("books.xml) Indlæser parseren:

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

Kodeforklaring:

  • Første linje opretter et tomt XML-dokumentobjekt
  • Anden linje lukker asynkron indlæsning, så parseren ikke fortsætter med at køre scriptet, før dokumentet er fuldt indlæst
  • Tredje linje informerer parseren om at indlæse dokumentet navngivet "books.xml"

Nedenstående JavaScript-segment indlæser strengen navngivet txt i parseren:

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

Kodeforklaring:

  • Første linje opretter en tom XML-dokumentobjekt
  • Anden linje informerer parseren om at indlæse strengen navngivet txt

Bemærk:Internet Explorer bruger loadXML() metoden til at analysere XML-streng, mens andre browsere bruger DOMParser objekt.

Analyser XML-fil - et eksempel for flere browsere

Nedenstående eksempel indlæser XML-dokumentet ("books.xml) Indlæser XML-parseren:

<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 er indlæst, klar til brug");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

Fejl: Adgang på tværs af domæner

Af sikkerhedsmæssige grunde tillader moderne browsere ikke adgang på tværs af domæner.

Dette betyder, at hjemmesiden samt XML-filen, den forsøger at indlæse, skal være placeret på samme server.

Eksemplet, der åbnes af CodeW3C.com, er placeret på CodeW3C.com-domænet.

Hvis du planlægger at bruge ovenstående eksempel på din egen hjemmeside, skal du placere XML-filen på din egen server. ellers vil xmlDoc.load() generere fejl "Adgang nægtet".

Analyser XML-streng - et eksempel for flere browsere

Nedenstående kode indlæser og analyserer en XML-streng:

<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 er indlæst, klar til brug");
</script>
</body>
</html>

TIY

Bemærk:Internet Explorer bruger loadXML() metoden til at analysere XML streng, mens andre browsere bruger DOMParser objekt.