解决跨浏览器读取XML文件的方法
来源:互联网 发布:民生银行网络面试 编辑:程序博客网 时间:2024/06/07 21:57
//检测系统支持的XMLDom方式function E_getControlPrefix() { var prefixes = ["MSXML2", "Microsoft", "@Microsoft", "MSXML", "MSXML3"]; var o, o2; for (var i = 0; i < prefixes.length; i++) { try { // try to create the objects o = new ActiveXObject(prefixes[i] + ".XmlHttp"); o2 = new ActiveXObject(prefixes[i] + ".XmlDom"); return E_getControlPrefix.prefix = prefixes[i]; } catch (ex) { }; }}//创建xmldom对象function loadXmlFile(xmlFile) { var xmlDom = null; try{ if (window.ActiveXObject) { //支持IE浏览器,可跨域 xmlDom = new ActiveXObject(E_getControlPrefix() + ".XMLDOM"); //xmlDom.loadXML(xmlFile);//如果用的是XML字符串 xmlDom.async = false; xmlDom.loadXML(xmlFile); //如果用的是xml文件。 return xmlDom; } else if (document.implementation && document.implementation.createDocument) { //支持火狐浏览器,可跨域 xmlDom = document.implementation.createDocument("", "", null); //xmlDom.async = false; xmlDom.load(xmlFile); return xmlDom; } } catch (ex) { } try{ //xmlhttp方式,支持火狐、chrome、oprea等浏览器,但不可跨域 var xmlhttp = new window.XMLHttpRequest(); xmlhttp.open("GET", xmlFile, false); xmlhttp.send(null); if (xmlhttp.status == 200) { xmlDom = xmlhttp.responseXML; } else { //传入的是XML字符串而非XML地址时非IE浏览器处理 var parseXml = new DOMParser(); var xmlDom = parseXml.parseFromString(xmlFile, "text/xml"); } } catch (ex) { //传入的是XML字符串而非XML地址时非IE浏览器处理 var parseXml = new DOMParser(); var xmlDom = parseXml.parseFromString(xmlFile, "text/xml"); } return xmlDom;}
OK 我们现在终于可以在chrome中加载XMLDOM文档了。不过别高兴的太早,问题还在后面呢。。。
2.childNode数量比IE下多function GetXmlText(node) { if (node.text != undefined) return node.text; else return node.textContent;}
//也可以使用prototype封装到node的对象上。。这里就不做多的阐述了。。
function selectSingleNode(node, xpath) { if (!window.ActiveXObject) { var x = selectNodes(node, xpath) if (!x || x.length < 1) return null; return x[0]; } else { return node.selectSingleNode(xpath); }}function selectNodes(node, xpath) { if (!window.ActiveXObject) { var xpe = new XPathEvaluator(); var nsResolver = xpe.createNSResolver(node.ownerDocument == null ? node.documentElement : node.ownerDocument.documentElement); var result = xpe.evaluate(xpath, node, nsResolver, 0, null); var found = []; var res; while (res = result.iterateNext()) found.push(res); return found; } else { return node.selectNodes(xpath); }}
- 解决跨浏览器读取XML文件的方法
- js读取xml文件,解决浏览器兼容问题
- 兼容各大浏览器JS读取XML文件方法
- 兼容各大浏览器JS读取XML文件方法
- 另类跨浏览器解析XML文件的方法
- 读取配置xml文件的方法
- Flex 读取xml文件的方法:
- java读取XML文件的方法
- javascript加载读取xml文件的方法
- libxml读取xml文件的其他方法
- EXTJS4读取XML文件的方法
- libxml读取xml文件的其他方法
- JS读取XML文件的方法
- tinyXML读取xml文件的方法
- 利用 Qt 读取 XML 文件的方法
- SAX读取xml文件的方法总结
- OpenCV读取XML/YML文件的方法
- java读取xml文件的方法汇总
- 两个工程关联应注意的问题
- Android之基本常见知识(持续更新) getwindow() requestWindowFeature()
- 推荐几本javascript与jquery的好书
- Apache Windows下关闭启动以及修改服务端口
- hadoop全套免费视频
- 解决跨浏览器读取XML文件的方法
- LeetCode | Two Sum
- 归并排序、二路归并排序
- leetcode#121 Best Time to Buy and Sell Stock
- gsoap中文乱码及内存清理等问题的解决方案
- 用Wordpress构建App更新和反馈平台(下)
- Java I/O : Bit Operation 位运算
- BZOJ3680 吊打XXX(模拟退火算法)
- 6.5android 自定义相机,以及部分手机系统相机的bug