将XML解析成DOM文档

时间:2022-03-12 09:13:50

在支持html5的浏览其中,可以使用标准解析器DOMParser对象进行解析html或者xml等字符串

var data = '<div></div>';
var tmp = new DOMParser();
xml = tmp.parseFromString(data, 'text/html');//解析xml时为text/xml

这时xml就是需要的dom文档了,也就是说,可以把它当成一个document对象,调用其中的节点
如xml.getElementsByTagName('div');

在IE以外的浏览器中,如果解析失败,方法parseFromString不会跑出异常,返回的是这么一段包含parseerror节点的文档对象

但是在IE9+中,会抛出异常

IE9以下不支持DOMParser,在IE9以下,实现方式为

var xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = "false";
xml.loadXML(data);

该方法如果解析失败,会返回false,如果解析成功,返回true,结果保存在xml中,完整的方法

function parseXML(data) {
var xml, tmp;
try {
if (window.DOMParser) {
tmp = new DOMParser();
xml = tmp.parseFromString(data, 'text/xml');
} else {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = "false";
xml.loadXML(data);
}
} catch(e) {
xml = undefined;
}
if (!xml || !xml.documentElement || xml.getElementsByTagName('parseerror').length) {
return false;
}
return xml;
}

其中检测xml.documentElement是为了检测IE9以下的错误