XML DOM 浏览器差异
XML DOM(Document Object Model)是处理XML文档的标准API。浏览器中也支持XML DOM,在处理XML文档时,浏览器的实现存在一定的差异。本文将从常见的浏览器进行介绍。
1. IE
在IE浏览器中,通过XML DOM读取XML文档需要使用ActiveXObject
来创建XML对象,在XML对象上使用load
方法加载XML文件,如下所示。
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("note.xml");
IE使用的XML DOM的版本为MSXML
。在IE6或更早的版本中,使用的是MSXML3.0;在IE7及后续版本中,使用的是MSXML6.0。在MSXML3.0版本中,XMLHttp对象的创建需要调用MSXML2.XMLHTTP
,而在MSXML6.0版本中,XMLHttp对象的创建需要调用MSXML2.ServerXMLHTTP
。因此,在使用XMLHttp对象进行异步XML文件读取时需要特别注意。
2. Firefox
在Firefox浏览器中,使用DOMParser
对象来创建XML对象,通过loadXML
或load
方法加载XML文件。示例代码如下。
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(text,"text/xml");
Firefox支持标准的W3C的XML DOM,并使XMLHttpRequest
对象可以异步地读取XML文件。但是,Firefox在解析XML时对XML文件格式要求较为严格,比如要求XML文件中的标签必须有一个根节点。
3. Chrome
在Chrome浏览器中,和在Firefox中使用DOMParser
类似,通过DOMParser
对象创建XML对象,使用parseFromString
方法加载XML。示例代码如下。
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString,"text/xml");
Chrome同样支持标准的W3C的XML DOM,并使用XMLHttpRequest
对象异步加载XML文件。另外,Chrome在解析XML时对XML文件的格式要求和Firefox类似。
4. Safari
在Safari浏览器中,也使用DOMParser
对象创建XML对象,使用parseFromString
方法加载XML文件。示例代码如下。
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(text,"text/xml");
Safari对于XML DOM的实现使用的是苹果公司实现的XML DOM。但是,在Safari中异步加载XML文件时存在问题,因为Safari会将异步请求转化为同步请求。
5. Opera
在Opera浏览器中,和在Firefox和Chrome中使用DOMParser
类似,通过DOMParser
对象创建XML对象,使用parseFromString
方法加载XML。示例代码如下。
var parser=new DOMParser();
var xmlDoc=parser.parseFromString(text,"text/xml");
Opera同样支持标准的W3C的XML DOM,并使用XMLHttpRequest
对象异步加载XML文件。但是,Opera在解析XML时对XML文件格式不严格,也就是说XML文件可以没有根节点。
综上,虽然不同浏览器对XML DOM的实现存在一定的差异,但是在特定环境下这些差异可能会产生影响。在编写XML DOM相关代码时,需要特别注意各种浏览器的支持情况。