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

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • JS实现的跨浏览器解析XML文件实例

    本文实例讲述了JS实现的跨浏览器解析XML文件的方法.分享给大家供大家参考,具体如下: 下列代码把一个 XML 文档 ("note.xml") 载入 XML 解析器中: <script type="text/javascript"> function GetXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(

  • 原生javascript实现解析XML文档与字符串

    之前写过一篇 <使用jquery解析XML的方法>链接是http://www.jb51.net/article/54842.htm,上篇文章详细解释了jQuery 与字符串互相转换的方法 ,这里着重论述javascript操作xml. 总代码如下: var XMLHttp = null; if (window.XMLHttpRequest) { //现代浏览器 XMLHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) {

  • jQuery解析XML与传统JavaScript方法的差别实例分析

    本文实例讲述了jQuery解析XML与传统JavaScript方法的差别.分享给大家供大家参考.具体分析如下: 1. 传统javascript方法: var xmlDoc = request.responseXML; try // Build Markers, if available { var markers = xmlDoc.getElementsByTagName("marker") ; for ( var i = 0; i < markers.length ; i++

  • JS解析XML文件和XML字符串详解

    JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览器的类型 //支持IE浏览器 if(!window.DOMParser && window.ActiveXObject){ var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.

  • xml 封装与解析(javascript和C#中)

    1.xml的解析(javascript中): 具体代码如下,解析的结果root为Dom树. 复制代码 代码如下: if (window.ActiveXObject){ var doc=new ActiveXObject("Microsoft.XMLDOM"); doc.async="false"; doc.loadXML(strXml); }else{ var parser=new DOMParser(); var doc=parser.parseFromStrin

  • js使用递归解析xml

    xml结构: 复制代码 代码如下: <RightMenuItems>   <Item Code="New" Name="新建" GroupCode="Edit" GroupName="编辑"/>   <Item Code="Open" Name="打开" GroupCode="Edit" GroupName="编辑"&

  • JS解析XML实例分析

    本文实例讲述了JS解析XML的方法.分享给大家供大家参考.具体实现方法如下: <script type="javascript"> var txt="<note>"; txt=txt+"<to>George</to>"; txt=txt+"<from>John</from>"; txt=txt+"<heading>Reminder&l

  • JS操作XML实例总结(加载与解析XML文件、字符串)

    本文实例讲述了JS操作XML的方法.分享给大家供大家参考,具体如下: 我的xml文件Login.xml如下. <?xml version="1.0" encoding="utf-8" ?> <Login> <Character> <C Text="热血" Value="0"></C> <C Text="弱气" Value="1&qu

  • JS解析XML的实现代码

    JS代码: 复制代码 代码如下: <script language="javascript" type="text/javascript"> //需要读取的xml文件 var uRl = "jsReadXml.xml"; var xmlDoc; //初始化,给上述定义变量赋值 // function showcurcity(){ if(window.ActiveXObject) { xmlDoc=new ActiveXObject(&

  • javascript解析xml实现省市县三级联动的方法

    本文实例讲述了javascript解析xml实现省市县三级联动的方法.分享给大家供大家参考.具体实现方法如下: (该方法适用于任何常用浏览器) <body> <div> <span> <select id="sheng" style="width: 100px"></select> </span> <span> <select id="shi" style=

  • jQuery解析XML文件同时动态增加js文件的方法

    本文实例讲述了jQuery解析XML文件同时动态增加js文件的方法.分享给大家供大家参考.具体实现方法如下: $(function(){ $.ajax({ url: 'js/config/jsConfig.xml', dataType: 'xml', success: function(data){ $(data).find("moduleName").each(function(i,obj) { var field = $(this); var funcName = field.at

随机推荐