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 相关文章推荐
js文字滚动停顿效果代码
Jun 28 Javascript
jQuery Animation实现CSS3动画示例介绍
Aug 14 Javascript
利用window.name实现windowStorage代码分享
Jan 02 Javascript
jQuery元素选择器用法实例
Dec 23 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
JS操作input标签属性checkbox全选的实现代码
Mar 02 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 jQuery
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 Javascript
Vue集成Iframe页面的方法示例
Dec 12 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
Dec 19 jQuery
Vue组件中slot的用法
Jan 30 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
Feb 27 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程序占用多少内存(memory_get_usage)
2012/09/23 PHP
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
python实现加密的方式总结
2020/01/19 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
python如何写try语句
2020/07/14 Python
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
西式婚礼证婚词
2014/01/12 职场文书
四年级数学教学反思
2014/02/02 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
会计个人实习计划书
2014/08/15 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书