JS实现兼容各浏览器解析XML文档数据的方法


Posted in Javascript onJune 01, 2015

本文实例讲述了JS实现兼容各浏览器解析XML文档数据的方法。分享给大家供大家参考。具体分析如下:

网站上很多用JS解析XML文档的资料或多或少都有点问题,

以下是自己总结的代码,用来解析XML文档,兼容各个浏览器。

parseXMLDOM.js代码:

/* 
 * 纯JS解析XML文档(兼容各个浏览器) 
 */ 
function parseXMLDOM(){ 
 var _browserType = ""; 
 var _xmlFile = ""; 
 var _XmlDom = null; 
 return { 
  "getBrowserType" : function(){ 
   return _browserType; 
  }, 
  "setBrowserType" : function(browserType){ 
   _browserType = browserType; 
  }, 
  "getXmlFile" : function(){ 
   return _xmlFile; 
  }, 
  "setXmlFile" : function(xmlFile){ 
   _xmlFile = xmlFile; 
  }, 
  "getXmlDom" : function(){ 
   return _XmlDom; 
  }, 
  "setXmlDom" : function(XmlDom){ 
   _XmlDom = XmlDom; 
  }, 
  "getBrowserType" : function(){ 
   var browserType = ""; 
   if(navigator.userAgent.indexOf("MSIE") != -1){ 
    browserType = "IE"; 
   }else if(navigator.userAgent.indexOf("Chrome") != -1){ 
    browserType = "Chrome"; 
   }else if(navigator.userAgent.indexOf("Firefox") != -1){ 
    browserType = "Firefox" 
   } 
   return browserType; 
  }, 
  "createXmlDom" : function(xmlDom){ 
   if(this.getBrowserType() == "IE"){//IE浏览器 
    xmlDom = new ActiveXObject('Microsoft.XMLDOM'); 
    xmlDom.async = false; 
    xmlDom.load(this.getXmlFile()); 
   }else{ 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open("GET", this.getXmlFile(), false); 
    xmlhttp.send(null); 
    xmlDom = xmlhttp.responseXML; 
   } 
   return xmlDom; 
  }, 
  "parseXMLDOMInfo" : function(){ 
   var xmlDom = this.getXmlDom(); 
   if(this.getBrowserType() == "IE"){ 
    var bookObj = xmlDom.selectNodes("books/book"); 
    if(typeof(bookObj) != "undifined"){ 
     var strHtml=""; 
     for(var i = 0; i < bookObj.length; i++){ 
      strHtml += bookObj[i].selectSingleNode("isbn").text; 
      strHtml += " "; 
      strHtml += bookObj[i].selectSingleNode("price").text; 
      strHtml += " "; 
      strHtml += bookObj[i].selectSingleNode("title").text; 
      if(i != bookObj.length - 1){ 
       strHtml += "<br>"; 
      } 
     } 
    } 
   }else{ 
    var book = xmlDom.getElementsByTagName("book"); 
    var strHtml=""; 
    for(var i = 0;i < book.length;i++){ 
     strHtml += book[i].getElementsByTagName("isbn")[0].textContent;
     strHtml += " "; 
     strHtml += " "; 
     strHtml += book[i].getElementsByTagName("price")[0].textContent;
     strHtml += " "; 
     strHtml += book[i].getElementsByTagName("title")[0].textContent; 
     if(i != book.length - 1){ 
      strHtml += "<br>"; 
     } 
    } 
   } 
   document.getElementById("msg").innerHTML = strHtml; 
  } 
 } 
} 
window.onload = function(){ 
 var parseObj = new parseXMLDOM(); 
 //设置浏览器类型 
 parseObj.setBrowserType(parseObj.getBrowserType()); 
 //设置文件路径 
 parseObj.setXmlFile("test.xml"); 
 //创建XMLDOM 
 parseObj.setXmlDom(parseObj.createXmlDom(null)); 
 //解析XMLDOM 
 parseObj.parseXMLDOMInfo(); 
}

index.html代码:

<!DOCTYPE html> 
<html> 
 <head> 
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  <title>JS解析XML文档中的数据(兼容所有浏览器)</title> 
  <script language="javascript" type="text/javascript" src="js/parseXMLDOM.js"></script> 
 </head> 
 <body> 
  <span id="msg"></span> 
 </body> 
</html>

test.xml代码:

<?xml version="1.0" encoding="UTF-8"?> 
<books> 
 <book> 
  <isbn>2207-1258-123</isbn> 
  <price>25</price> 
  <title>Javascript</title> 
 </book> 
 <book> 
  <isbn>2207-1258-456</isbn> 
  <price>50</price> 
  <title>Ajax</title> 
 </book> 
 <book> 
  <isbn>2207-1258-789</isbn> 
  <price>75</price> 
  <title>C#</title> 
 </book> 
</books>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
Jun 07 Javascript
jQuery中需要注意的细节问题小结
Dec 06 Javascript
js onload事件不起作用示例分析
Oct 09 Javascript
js返回前一页刷新本页重载页面
Jul 29 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
Jan 07 Javascript
代码分析jQuery四种静态方法使用
Jul 23 Javascript
jQuery对象与DOM对象转换方法详解
May 10 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
Jul 22 Javascript
基于原生JS实现图片裁剪
Aug 01 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
Vue组件实现触底判断
Jun 26 Javascript
解决vue项目axios每次请求session不一致的问题
Oct 24 Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 #Javascript
js事件监听器用法实例详解
Jun 01 #Javascript
JavaScript中isPrototypeOf函数作用和使用实例
Jun 01 #Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
Jun 01 #Javascript
JavaScript使用addEventListener添加事件监听用法实例
Jun 01 #Javascript
JavaScript使用位运算符判断奇数和偶数的方法
Jun 01 #Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
Jun 01 #Javascript
You might like
sql注入与转义的php函数代码
2013/06/17 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
浅析JavaScript动画
2015/06/10 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
Python中的迭代器漫谈
2015/02/03 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python基础教程之匿名函数lambda
2017/01/17 Python
python分布式环境下的限流器的示例
2017/10/26 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
django 实现简单的插入视频
2020/04/07 Python
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
总裁秘书岗位职责
2013/12/04 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
体育之星事迹材料
2014/05/11 职场文书
终止合同协议书范本
2016/03/22 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
Python办公自动化之Excel(中)
2021/05/24 Python
原生JS实现飞机大战小游戏
2021/06/09 Javascript