所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器。
解析器把 XML 转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。
所有现代浏览器都有读取和操作 XML 的内建 XML 解析器。
解析器把 XML 载入内存,然后把它转换为可通过 JavaScript 访问的 XML DOM 对象 。
您将在本教程的下一节中学习更多有关 XML DOM 的知识。
微软的 XML 解析器与其他浏览器中的解析器之间,存在一些差异。微软的解析器支持 XML 文件和 XML 字符串(文本)的加载,而其他浏览器使用单独的解析器。不过,所有的解析器都包含遍历 XML 树、访问插入及删除节点(元素)及其属性的函数。
在本教程中,我们将为您展示如何创建可同时工作于 Internet Explorer 和其他浏览器中的脚本。
注释:当我们谈及 XML 解析,我们常常会使用有关 XML 元素的术语: 节点 。
下面的代码片段把 XML 文档解析到 XML DOM 对象中:
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest()
; } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
; } xmlhttp.open("GET","books.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML;
微软的 XML 解析器内建于 Internet Explorer 5 以及更高的版本中。
下面的 JavaScript 片段把一个 XML 文档载入解析器中:
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
;
xmlDoc.async="false";
xmlDoc.load("note.xml");
下面的 JavaScript 片段把 XML 文档 ("note.xml") 载入解析器:
var xmlDoc=document.implementation.createDocument("","",null)
;
xmlDoc.async="false";
xmlDoc.load("note.xml");
下面的 JavaScript 代码片段把 XML 字符串解析到 XML DOM 对象中(把字符串 txt 载入解析器):
txt="<bookstore><book>"; txt=txt+"<title>Everyday Italian</title>"; txt=txt+"<author>Giada De Laurentiis</author>"; txt=txt+"<year>2005</year>"; txt=txt+"</book></bookstore>"; if (window.DOMParser) { parser=new DOMParser()
; xmlDoc=parser.parseFromString(txt,"text/xml"); } else // Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
; xmlDoc.async="false"; xmlDoc.loadXML(txt); }
注释:Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象 。
注释:loadXML() 方法用于加载字符串(文本),load() 用于加载文件。
出于安全方面的原因,现代的浏览器不允许跨域的访问。
这意味着,网页以及它试图加载的 XML 文件,都必须位于相同的服务器上。
W3School 的实例所打开的 XML 文件位于 W3School 的域上。
假如你打算在自己的网页上使用上面的例子,则必须把 XML 文件放到自己的服务器上。否则,xmlDoc.load() 将产生错误 "Access is denied"。
在本教程的下一章节,您将学习如何访问 XML 文档对象 (XML DOM) 并取回数据。