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对象,通过loadXMLload方法加载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相关代码时,需要特别注意各种浏览器的支持情况。