Parsing XML DOM
- Previous page DOM node tree
- Next page DOM loading
De meeste browsers hebben een ingebouwde XML-parser voor het lezen en manipuleren van XML.
De parser converteert XML naar objecten die toegankelijk zijn voor JavaScript.
Voorbeeld
De voorbeelden die CodeW3C.com biedt, zijn onafhankelijk van browser en platform. Deze voorbeelden kunnen in alle moderne browsers worden uitgevoerd.
Parse XML
Alle moderne browsers hebben een ingebouwde XML-parser voor het lezen en manipuleren van XML.
De parser leest XML in en converteert het naar een XML DOM-object dat toegankelijk is voor JavaScript.
Microsoft's XML-parser verschilt van de parsers in andere browsers. Microsoft's parser ondersteunt het laden van XML-bestanden en XML-strings (tekst), terwijl andere browsers een aparte parser gebruiken. Hoewel alle parsers functies bevatten om door het XML-boomstructuur te navigeren, knopen te verkennen, knopen in te voegen en knopen te verwijderen.
In deze handleiding zullen we u uitleggen hoe u scripts kunt maken die in IE en andere browsers kunnen draaien.
Laad XML via Microsoft's XML-parser
Microsoft's XML-parser is ingebouwd in Internet Explorer 5 en hogere versies.
Het volgende JavaScript-codestuk laadt het XML-document ("books.xml) Laadde de parser in:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load("books.xml");
Codeverklaring:
- de eerste regel maakt een lege Microsoft XML-documentobject aan
- De tweede regel sluit de asynchrone laadtoegang af, zodat de parser niet doorgaat met het uitvoeren van het script voordat het document volledig is geladen
- De derde regel laat de parser weten om het document genaamd "books.xml" te laden
Het volgende JavaScript-codestuk laadt de tekenreeks genaamd txt in de parser:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(txt);
Note:loadXML() de methode wordt gebruikt om strings (tekst) te laden, terwijl load() Gebruikt om bestanden te laden.
de XML-parser in Firefox en andere browsers
Het volgende JavaScript-codestuk laadt het XML-document ("books.xml) Laadde de parser in:
xmlDoc=document.implementation.createDocument("","",null); xmlDoc.async="false"; xmlDoc.load("books.xml");
Codeverklaring:
- De eerste regel maakt een lege XML-documentobject aan
- De tweede regel sluit de asynchrone laadtoegang af, zodat de parser niet doorgaat met het uitvoeren van het script voordat het document volledig is geladen
- De derde regel laat de parser weten om het document genaamd "books.xml" te laden
Het volgende JavaScript-codestuk laadt de tekenreeks genaamd txt in de parser:
parser=new DOMParser(); xmlDoc=parser.parseFromString(txt,"text/xml");
Codeverklaring:
- De eerste regel maakt een lege XML-documentobject aan
- De tweede regel laat de parser weten om de tekenreeks genaamd txt te laden
Note:Internet Explorer gebruikt loadXML() methode om een XML-tekenreeks te analyseren, terwijl andere browsers DOMParser object.
XML-bestand analyseren - een voorbeeld voor meerdere browsers
Het volgende voorbeeld parseert een XML-document ("books.xml) Laad de XML-parser in:
<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>
Fout: Toegang Over Domeinen
Vanwege veiligheidsredenen staat een moderne browser het toegangsovergang van domeinen niet toe.
Dit betekent dat zowel de webpagina als het XML-bestand dat deze probeert te laden, op dezelfde server moeten staan.
Het XML-bestand dat het voorbeeld op CodeW3C.com opent, bevindt zich op het domein van CodeW3C.com.
Als je van plan bent om het bovenstaande voorbeeld op je eigen webpagina te gebruiken, moet je het XML-bestand op je eigen server plaatsen. Anders zal xmlDoc.load() de fout "Toegang geweigerd" veroorzaken.
XML-tekenreeks analyseren - een voorbeeld voor meerdere browsers
Onderstaande code laadt en parseert een XML-tekenreeks:
<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>
Note:Internet Explorer uses the loadXML() method to parse XML strings, while other browsers use DOMParser object.
- Previous page DOM node tree
- Next page DOM loading