XML DOM Browser Verschillen

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.

TIY

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

TIY (simple) Or TIY (complete)