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 相关文章推荐
javascript学习笔记(五)正则表达式
Apr 08 Javascript
Jquery动态更改一张位图的src与Attr的使用
Jul 31 Javascript
jQuery读取和设定KindEditor值的方法
Nov 22 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
Dec 24 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
Oct 16 Javascript
使用AngularJS实现表单向导的方法
Jun 19 Javascript
jquery实现两个图片渐变切换效果的方法
Jun 25 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
Aug 01 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
May 12 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
Mar 05 Javascript
微信小程序wepy框架学习和使用心得详解
May 24 Javascript
vue中echarts引入中国地图的案例
Jul 28 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
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
php和javascript之间变量的传递实现代码
2012/12/19 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
php图像验证码生成代码
2017/06/08 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
JavaScript 动态改变图片大小
2009/06/11 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
javascript 动态修改css样式方法汇总(四种方法)
2015/08/27 Javascript
js如何打印object对象
2015/10/16 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
python简单猜数游戏实例
2015/07/09 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
python 多线程中join()的作用
2020/10/29 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
售后服务经理岗位职责
2014/02/25 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书