XML DOM

DOM (Document Object Model,文档对象模型)定义了访问和操作文档的标准方法。


XML DOM

XML DOM (XML Document Object Model) 定义了访问和操作 XML 文档的标准方法。

DOM 把 XML 文档作为树结构来查看。能够通过 DOM 树来访问所有元素。可以修改或删除它们的内容,并创建新的元素。元素,它们的文本,以及它们的属性,都被认为是节点。

在下面的例子中,我们使用 DOM 引用从 <to> 元素中获取文本:

  1. xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue

xmlDoc -由解析器创建的 XML 文档

getElementsByTagName("to")[0] - 第一个 <to> 元素

childNodes[0] - <to> 元素的第一个子元素(文本节点)

nodeValue - 节点的值(文本本身)

您可以在 本站 的 XML DOM 教程 中学习更多相关知识。


HTML DOM

HTML DOM (HTML Document Object Model) 定义了访问和操作 HTML 文档的标准方法。

可以通过 HTML DOM 访问所有 HTML 元素。

在下面的例子中,我们使用 DOM 引用来改变 id="to" 的 HTML 元素的文本:

  1. document.getElementById("to").innerHTML=

document - HTML 文档

getElementById("to") - 其中的 id="to" 的 HTML 元素

innerHTML - HTML 元素的内部文本

您可以在 本站 的 HTML DOM 教程 中学习更多相关知识。


解析 XML 文件 - 跨浏览器实例

下列代码把一个 XML 文档 ("note.xml") 载入 XML 解析器中:

  1. <html>
  2. <body>
  3. <h1>Cankaoshouce Internal Note</h1>
  4. <p>
  5. <b>To:</b> <span id="to"></span><br />
  6. <b>From:</b> <span id="from"></span><br />
  7. <b>Message:</b> <span id="message"></span>
  8. </p>
  9. <script type="text/javascript">
  10. if (window.XMLHttpRequest) {
  11. // code for IE7+, Firefox, Chrome, Opera, Safari
  12. xmlhttp = new XMLHttpRequest();
  13. }
  14. else {
  15. // code for IE6, IE5
  16. xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  17. }
  18. xmlhttp.open("GET", "/example/xml/note.xml", false);
  19. xmlhttp.send();
  20. xmlDoc = xmlhttp.responseXML;
  21. document.getElementById("to").innerHTML =
  22. xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
  23. document.getElementById("from").innerHTML =
  24. xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
  25. document.getElementById("message").innerHTML =
  26. xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
  27. </script>
  28. </body>
  29. </html>

输出:

  1. Cankaoshouce Internal Note
  2. To: 李雷
  3. From: 韩梅梅
  4. Message: 不要忘记开会!

重要注释

如需从 XML 中提取文本 "韩梅梅",语法是:

  1. getElementsByTagName("from")[0].childNodes[0].nodeValue

在上例中,只有一个 <from> 标签,但是仍然需要规定数组的下标 [0],这是因为 getElementsByTagName() 方法会返回包含所有 <from> 节点的数组。


解析 XML 字符串 - 跨浏览器实例

下面的代码加载并解析一个 XML 字符串:

  1. <html>
  2. <body>
  3. <h1>Cankaoshouce Internal Note</h1>
  4. <p>
  5. <b>To:</b> <span id="to"></span><br />
  6. <b>From:</b> <span id="from"></span><br />
  7. <b>Message:</b> <span id="message"></span>
  8. </p>
  9. <script>
  10. txt = "<note>";
  11. txt = txt + "<to>李雷</to>";
  12. txt = txt + "<from>韩梅梅</from>";
  13. txt = txt + "<heading>提醒</heading>";
  14. txt = txt + "<body>不要忘记开会!</body>";
  15. txt = txt + "</note>";
  16. if (window.DOMParser) {
  17. parser = new DOMParser();
  18. xmlDoc = parser.parseFromString(txt, "text/xml");
  19. }
  20. else
  21. {
  22. // Internet Explorer
  23. xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  24. xmlDoc.async = "false";
  25. xmlDoc.loadXML(txt);
  26. }
  27. document.getElementById("to").innerHTML = xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
  28. document.getElementById("from").innerHTML = xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
  29. document.getElementById("message").innerHTML = xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
  30. </script>
  31. </body>
  32. </html>

输出:

  1. Cankaoshouce Internal Note
  2. To: 李雷
  3. From: 韩梅梅
  4. Message: 不要忘记开会!

注释:Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象