·您当前的位置:首页 > 技术教程 > JavaScript >

[JS]用js解析xml文件实例(兼容浏览器写法)

时间:2014-07-14 10:34酷播
[JS]用js解析xml文件实例(兼容浏览器写法),前段时间,客户要求增加一个点击率的小功能,现将部分JS代码附上,对以后有所帮助

前段时间,客户要求增加一个点击率的小功能,现将部分JS代码附上,对以后有所帮助。

  1、通过JS读取XML文件,主要是判断各个浏览器 

  1. // 加载xml文档 
  2.        var loadXML = function (xmlFile) { 
  3.             var xmlDoc; 
  4.             if (window.ActiveXObject) { 
  5.                 xmlDoc = new ActiveXObject('Microsoft.XMLDOM');//IE浏览器 
  6.                 xmlDoc.async = false
  7.                 xmlDoc.load(xmlFile); 
  8.             } 
  9.             else if (isFirefox=navigator.userAgent.indexOf("Firefox")>0) { //火狐浏览器 
  10.             //else if (document.implementation && document.implementation.createDocument) {//这里主要是对谷歌浏览器进行处理 
  11.                 xmlDoc = document.implementation.createDocument('', '', null); 
  12.                 xmlDoc.load(xmlFile); 
  13.             } 
  14.             else{ //谷歌浏览器 
  15.               var xmlhttp = new window.XMLHttpRequest(); 
  16.                 xmlhttp.open("GET",xmlFile,false); 
  17.                 xmlhttp.send(null); 
  18.                 if(xmlhttp.readyState == 4){ 
  19.                 xmlDoc = xmlhttp.responseXML.documentElement; 
  20.                 }  
  21.             } 
  22.  
  23.             return xmlDoc; 
  24.         } 
  25.  
  26.         // CuPlayer.com提示:首先对xml对象进行判断 
  27.       var  checkXMLDocObj = function (xmlFile) { 
  28.             var xmlDoc = loadXML(xmlFile); 
  29.             if (xmlDoc == null) { 
  30.                 alert('CuPlayer.com提示:您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!'); 
  31.                 window.location.href = '../err.html'
  32.  
  33.             } 
  34.             return xmlDoc; 
  35.         } 

  2、将读取到的xml文件中的数据显示到html文档上

  1. <script type="text/javascript" language="javascript"> 
  2.         var xmlDoc = checkXMLDocObj('../openClass.xml');//读取到xml文件中的数据 
  3.         var a = document.getElementsByTagName("a");//获取所有的A标签 
  4.         $(document).ready(function () { 
  5.               var nodes; 
  6.             if($.browser.msie){ // 注意各个浏览器之间的区别 
  7.              nodes = xmlDoc.getElementsByTagName('collage')[0].childNodes; //读取XML文件中需要显示的数据 
  8.              }  
  9.              else if (isFirefox=navigator.userAgent.indexOf("Firefox")>0){ 
  10.                 nodes = xmlDoc.getElementsByTagName('collage')[0].children; //读取XML文件中需要显示的数据 
  11.              } 
  12.              else{ 
  13.                 nodes = xmlDoc.getElementsByTagName('resource'); 
  14.              } 
  15.              
  16.              for (var i = 0; i < a.length; i++) { 
  17.                 if (a[i].parentNode.nodeName == "SPAN") { 
  18.                     for (var j = 0; j < nodes.length; j++) { 
  19.                         var resource = nodes[j]; 
  20.                         var url = resource.getAttribute('url'); 
  21.                         var href=$(a[i]).attr("href"); 
  22.                         if (href == url) { 
  23.                             var count = resource.getAttribute('click'); 
  24.                             var span = document.createElement("div"); 
  25.                             var str = document.createTextNode("点击率:" + count); 
  26.                             span.appendChild(str); 
  27.                             var div = a[i].parentNode.parentNode; 
  28.                             div.appendChild(span); 
  29.                             break; 
  30.                         } 
  31.                     } 
  32.                 } 
  33.             } 
  34.         }); 
  35.                 $(function(){ //通过get请求,将点击率增加 
  36.                  $(a).mousedown(function(){ 
  37.                              var href = $(this).attr("href"); 
  38.                             $.get("../receive.ashx",{url:href,rd:Math.random()}, function (msg) { 
  39.                              
  40.                             }); 
  41.                         }) 
  42.         })   
  43.     </script> 

  3、通过更新ashx文件在服务器上更新对应的xml文件

  1. public void ProcessRequest(HttpContext context) 
  2.     { 
  3.         context.Response.ContentType = "text/plain"
  4.         string src = context.Request.QueryString["url"]; 
  5.         string path = context.Server.MapPath("openClass.xml"); //打开xml文件 
  6.         XmlDocument xmlDoc = new XmlDocument(); 
  7.         xmlDoc.Load(path); //注意不能用Xmlload()方法 
  8.         XmlNodeList nodeslist = xmlDoc.SelectNodes("/collage/resource"); //CuPlayer.com提示:找到对应的节点 
  9.         foreach (XmlNode node in nodeslist) 
  10.         { 
  11.             XmlElement xe = (XmlElement)node; 
  12.             if (xe.GetAttribute("url") == src) 
  13.             { 
  14.                 int count = int.Parse(xe.GetAttribute("click")); 
  15.                 countcount = count + 1; 
  16.                 xe.SetAttribute("click", count.ToString()); //更新内容 
  17.             } 
  18.         } 
  19.         xmlDoc.Save(path); //CuPlayer.com提示:保存 
  20.         
  21.     } 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器