Analyser XML DOM
- Forrige side DOM nodetræ
- Næste side DOM indlæsning
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.
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>
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>
Bemærk:Internet Explorer bruger loadXML() metoden til at analysere XML streng, mens andre browsere bruger DOMParser objekt.
- Forrige side DOM nodetræ
- Næste side DOM indlæsning