XML DOM Browser Verschillen
- Previous page DOM traverse node
- Next page DOM locate node
Verschillende browsers behandelen tekstknopen in XML DOM op verschillende manieren.
Voorbeeld
Het volgende voorbeeld gebruikt een XML-bestand books.xml.
Functie loadXMLDoc()Geplaatst in externe JavaScript, gebruikt voor het laden van XML-bestanden.
- Lengte van knopenlijst weergeven
- Dit voorbeeld toont de lengte van een lijst van knopen. Het resultaat is verschillend in IE en andere browsers.
- Ignore the empty text between nodes
- Dit voorbeeld controleert de nodeType van knopen en behandelt alleen elementknopen.
Browserdifferenties in DOM-berekening
Alle moderne browsers ondersteunen de W3C DOM-specificaties.
Hoewel er verschillen zijn tussen browsers. Belangrijke verschillen zijn er twee:
- Manieren om XML te laden
- Manieren om witruimte en regeleinden te verwerken
in “XML DOM Parseer” Deze sectie heeft verschillende manieren van laden van XML uitgelegd.
In deze sectie zullen we verschillende manieren bespreken om witruimte en regeleinden te verwerken.
DOM - witruimte en regeleinden
XML bevat vaak regeleinden of witruimte tussen knopen. Dit is een veelvoorkomend probleem bij het gebruik van eenvoudige editors (bijvoorbeeld Notepad).
Het volgende voorbeeld (bewerkt met Notepad) bevat CR/LF tussen elke regel en twee spaties voor elke subnode:
<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>
Firefox en andere browsers behandelen lege witruimte of enter als tekstknopen, terwijl Internet Explorer dit niet doet.
The following code snippet shows how many child nodes the root element (of books.xml) has:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; document.write("Number of child nodes: " + x.length);
Example explanation:
- By using loadXMLDoc() Put "books.xml" Load xmlDoc in
- Get the child nodes of the root element
- Output the number of child nodes
The result depends on the browser used. Firefox outputs 9, while IE outputs 4.
Ignore the empty text between nodes
To ignore the empty text nodes between element nodes, you need to check the node type. The type of element node is 1:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { if (x[i].nodeType==1) {// only process element nodes document.write(x[i].nodeName); document.write("<br />"); } }
Example explanation:
- By using loadXMLDoc() Put "books.xml" Load xmlDoc in
- Get the child nodes of the root element
- Check the node type of each child node. If the node type is "1", it is an element node
- Previous page DOM traverse node
- Next page DOM locate node