跨浏览器的Javascript XML解析
Cross-Browser Javascript XML Parsing
是否有跨浏览器/跨平台的方法来解析Javascript中的XML文件?
以下内容将在所有主流浏览器中工作,包括IE 6:
var parseXml;
if (typeof window.DOMParser != "undefined") {
parseXml = function(xmlStr) {
return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
};
} else if (typeof window.ActiveXObject != "undefined" &&
new window.ActiveXObject("Microsoft.XMLDOM")) {
parseXml = function(xmlStr) {
var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlStr);
return xmlDoc;
};
} else {
throw new Error("No XML parser found");
}
使用例子:
var xml = parseXml("<foo>Stuff</foo>");
alert(xml.documentElement.nodeName);
现场演示:
var parseXml;
if (typeof window.DOMParser != "undefined") {
parseXml = function(xmlStr) {
return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
};
} else if (typeof window.ActiveXObject != "undefined" &&
new window.ActiveXObject("Microsoft.XMLDOM")) {
parseXml = function(xmlStr) {
var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlStr);
return xmlDoc;
};
} else {
throw new Error("No XML parser found");
}
var xml = parseXml("<foo>Stuff</foo>");
document.body.innerHTML = "Root element: " + xml.documentElement.nodeName;
考虑使用jQuery.parseXML.
请注意,旧的JQuery代码(2.x之前)基本上与公认答案中建议的代码相同,可以在http://code.jquery.com/jquery-1.9.1.js找到,部分版本如下:
// Cross-browser xml parsing
parseXML: function( data ) {
...
try {
if ( window.DOMParser ) { // Standard
tmp = new DOMParser();
xml = tmp.parseFromString( data , "text/xml" );
} else { // IE
xml = new ActiveXObject( "Microsoft.XMLDOM" );
xml.async = "false";
xml.loadXML( data );
}
} catch( e ) {
xml = undefined;
}
...
}
开始使用JQueryx代码更改为跳过ActiveX分支,如果您仍然需要它-使用旧版本的JQuery或内联ActiveX解析。部分代码来自http://code.jquery.com/jquery-2.0.0.js:
// Cross-browser xml parsing
parseXML: function( data ) {
var xml, tmp;
.....
// Support: IE9
try {
tmp = new DOMParser();
xml = tmp.parseFromString( data , "text/xml" );
} catch ( e ) {
xml = undefined;
}
.....
},
如果需要解析可能无法完全保存在内存中的大型XML文档,请考虑使用SAX样式的解析器,如下所示:https://github.com/isaacs/sax-js/
相关文章:
- 谷歌电子表格的自定义xml解析功能
- 如何在jquery中将xml解析数据获取为全局变量
- iOS上ajax中的phonegap XML解析器geting错误
- 使用javascript进行xml解析
- 使用JQuery将XML解析为SQLite DB时出错:所有行都具有相同的值
- 如何检测以跨浏览器方式使用 Javascript 的 DOMParser 时的 XML 解析错误
- jQuery将xml解析为嵌套列表
- 在IE9中使用jQuery进行XML解析时缺少innerHTML,但Chrome中没有
- Appcelerator Windows Phone XML 解析错误
- 除 IE 之外的其他浏览器的 XML 解析器
- JavaScript XML解析在IE中工作,但在Firefox / Chrome中不起作用
- jquery XML 解析最后 3 个文档
- XML 解析错误:使用浏览器内置解析器解析 XML 字符串时格式不正确
- 通过 xml 解析
- XML解析器/从XML节点列表创建一个XML DOM文档
- PhoneGap 中的 XML 解析错误
- 使用 javascript 将错误从 XML 解析为 Html
- NOAA 天气数据的 Javascript XML 解析 - 从子节点提取数据时出现问题
- XML 解析与 Jquery for IE7+ 和 Mozilla
- jQuery中的基本XML解析