XML DOM auswerten

大多数浏览器都内置了用于读取和操作 XML 的 XML 解析器。

解析器将 XML 转换为 JavaScript 可访问的对象。

实例

CodeW3C.com 提供的实例独立于浏览器和平台。这些实例可在所有现代浏览器中运行。

加载并解析 XML 文件
加载并解析 XML 字符串

解析 XML

所有现代浏览器都内置了用于读取和操作 XML 的 XML 解析器。

解析器将 XML 读入内存,并将其转换为可被 JavaScript 访问的 XML DOM 对象。

微软的 XML 解析器与其他浏览器中的解析器存在差异。微软的解析器支持对 XML 文件和 XML 字符串(文本)的加载,而其他浏览器使用单独的解析器。不过,所有的解析器都包含遍历 XML 树、访问、插入及删除节点的函数。

在本教程中,我们将向您讲解如何创建可在 IE 及其他浏览器中运行的脚本。

通过微软的 XML 解析器加载 XML

微软的 XML 解析器内置于 Internet Explorer 5 及更高版本中。

Das folgende JavaScript-Stück lädt das XML-Dokument ("books.xml) lädt den Parser:

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

Code-Übersetzung:

  • 第一行创建空的微软 XML 文档对象
  • Die zweite Zeile schaltet die asynchrone Ladevorgänge ab, um sicherzustellen, dass der Parser vor der Fortsetzung des Skripts das Dokument vollständig geladen hat
  • Die dritte Zeile teilt dem Parser mit, dass das Dokument namens "books.xml" geladen werden soll

Das folgende JavaScript-Stück lädt die Zeichenkette namens txt in den Parser:

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

Anmerkung:loadXML() 该方法用于加载字符串(文本),而 load() 用于加载文件。

den XML-Parser in Firefox und anderen Browsern

Das folgende JavaScript-Stück lädt das XML-Dokument ("books.xml) lädt den Parser:

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

Code-Übersetzung:

  • Die erste Zeile erstellt ein leeres XML-Dokumentobjekt
  • Die zweite Zeile schaltet die asynchrone Ladevorgänge ab, um sicherzustellen, dass der Parser vor der Fortsetzung des Skripts das Dokument vollständig geladen hat
  • Die dritte Zeile teilt dem Parser mit, dass das Dokument namens "books.xml" geladen werden soll

Das folgende JavaScript-Stück lädt die Zeichenkette namens txt in den Parser:

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

Code-Übersetzung:

  • Die erste Zeile erstellt ein leeres XML-Dokumentobjekt
  • Die zweite Zeile teilt dem Parser mit, dass die Zeichenkette namens txt geladen werden soll

Anmerkung:Internet Explorer loadXML() Methode, um einen XML-String zu parsen, während andere Browser DOMParser Objekt.

XML-Dokument Parseieren - Ein Beispiel für einen Cross-Browser

Das folgende Beispiel parseiert das XML-Dokument ("books.xml) lädt den XML-Parser:

<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 ist geladen, bereit zur Verwendung");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

Fehler: Zugriffsfehler zwischen Domänen

Aus Sicherheitsgründen erlauben moderne Browser keinen Cross-Domain-Zugriff.

Das bedeutet, dass die Webseite sowie die XML-Datei, die sie lädt, beide auf dem gleichen Server sein müssen.

Die von CodeW3C.com geöffneten XML-Dateien befinden sich auf dem Domänennamen CodeW3C.com.

Wenn du den obigen Beispiel auf deiner Webseite verwenden möchtest, musst du die XML-Datei auf deinem eigenen Server platzieren. Andernfalls wird xmlDoc.load() den Fehler "Access is denied" erzeugen.

XML-String Parseieren - Ein Beispiel für einen Cross-Browser

Der folgende Code lädt und parseiert einen XML-String:

<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 ist geladen, bereit zur Verwendung");
</script>
</body>
</html>

TIY

Anmerkung:Internet Explorer verwendet die Methode loadXML() zum Parsen von XML-Zeichenfolgen, während andere Browser DOMParser Objekt.