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 禁止选择功能实现代码(兼容IE/Firefox)
Apr 23 Javascript
模拟select的代码
Oct 19 Javascript
gridpanel动态加载数据的实例代码
Jul 18 Javascript
javascript实现动态表头及表列的展现方法
Jul 14 Javascript
常见的javascript跨域通信方法
Dec 31 Javascript
JavaScript获取对象在页面中位置坐标的方法
Feb 03 Javascript
JavaScript 数组中最大最小值
Jun 05 Javascript
全面了解JavaScript对象进阶
Jul 19 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 Javascript
基于Vue-cli快速搭建项目的完整步骤
Nov 03 Javascript
js作用域和作用域链及预解析
Apr 11 Javascript
JavaScript实现美化滑块效果
May 17 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中的正规表达式(二)
2006/10/09 PHP
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
sina的lightbox效果。
2007/01/09 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
Python使用requests提交HTTP表单的方法
2018/12/26 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
使用python实现多维数据降维操作
2020/02/24 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
JDK安装目录下有哪些内容
2014/08/25 面试题
儿科护理实习自我鉴定
2013/09/19 职场文书
金融专业个人的自我评价
2013/10/18 职场文书
公证书标准格式
2014/04/10 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
表扬信范文
2019/04/22 职场文书
MySQL日期时间函数知识汇总
2022/03/17 MySQL
教你部署vue项目到docker
2022/04/05 Vue.js