用javascript对Xml文件进行操作

最近由于工作的要求,需要用javascript对xml文件进行操作,虽说比较麻烦,但基本还是可以实现,现将初稿贴出来,希望大家能够提出保贵的意见:

要操作的文件dept.xml

js 代码
  1. "1.0" encoding="utf-8"?>   
  2. <message></message>  
  3.     <country></country>   
  4.         "China" Chinese="中国"/>   
  5.         "Afghanistan" Chinese="阿富汗"/>   
  6.         "Albania" Chinese="阿尔巴尼亚"/>   
  7.         "Algeria" Chinese="阿尔及利亚"/>   
  8.         "Andorra" Chinese="安道尔"/>   
  9.        
  10.   

对XML文件操作的javascript代码:

js 代码
  1. <script language=< span="">"javascript" runat="server">   
  2.     var objxml = "";   
  3.     var doxml = {   
  4.         initXml : function(url){   
  5.             objxml = Server.CreateObject("Msxml2.DOMDocument");   
  6.             objxml.load(Server.MapPath(url));   
  7.         },   
  8.         addXml : function(num,attributename,attributetext){   
  9.             var docxml = objxml.selectSingleNode("message");   
  10.             var newNode = docxml.childNodes.item(num);   
  11.             var newNodeChild = objxml.createElement("list");   
  12.             for(var i=0;i<attributename.length;i++){   <="" span="">
  13.                 newNodeChild.setAttribute(attributename[i],attributename[i]);   
  14.             }   
  15.             newNode.appendChild(newNodeChild);                 
  16.         },   
  17.         deleteXml : function(num,attribuename,attributetext){   
  18.             var docxml = objxml.selectSingleNode("message");   
  19.             var delNode = docxml.childNodes.item(num);   
  20.             var delChilds = delNode.childNodes;   
  21.             for(var i = 0; i<delchilds.length;i++){   <="" span="">
  22.                 if(delChilds[i].getAttribute(attribuename) == attributetext) delNode.removeChild(delChilds[i]);   
  23.             }   
  24.         },   
  25.         updateXml : function(num,attribuename1,attribuetext1,attribuename2,attribuetext2){   
  26.             var docxml = objxml.selectSingleNode("message");   
  27.             var updNode = docxml.childNodes.item(num);   
  28.             var delChilds = updNode.childNodes;   
  29.             for(var i=0;i<delchilds.length;i++){   <="" span="">
  30.                 if(delChilds[i].getAttribute(attribuename1) == attribuetext1)   
  31.                     delChilds[i].setAttribute(attribuename2,attribuetext2)   
  32.             }   
  33.         },   
  34.         selectXml : function(num,attribuename1,attribuetext1,attribuename){   
  35.             var docxml = objxml.selectSingleNode("message");   
  36.             var selNode = docxml.childNodes.item(num);   
  37.             var delChilds = selNode.childNodes;   
  38.             for(var i=0;i<delchilds.length;i++){   <="" span="">
  39.                 if(delChilds[i].getAttribute(attribuename1) == attribuetext1)   
  40.                     Response.Write(delChilds[i].getAttribute(attribuename));   
  41.             }   
  42.         },   
  43.         saveXml : function(){   
  44.             objxml.save(Server.MapPath("dept.xml"));   
  45.         },   
  46.         closeXml : function(){   
  47.             objxml = null;   
  48.         }   
  49.     }      
  50.     var act = Request.QueryString("way");   
  51.        
  52.     function trim(str){   
  53.         var temp = "";   
  54.         str = '' + str;   
  55.         splitstr = str.split(" ");   
  56.         for(i = 0; i < splitstr.length; i++)   
  57.         temp += splitstr[i];   
  58.         return temp;   
  59.     }      
  60.     switch(trim(act)){   
  61.         case "add" : {             
  62.             doxml.initXml("dept.xml");             
  63.             var num = parseInt(Request.QueryString("num"));   
  64.             var temp = (Request.QueryString("name"));   
  65.             var text = (Request.QueryString("text"));   
  66.             var attribuename = new Array();   
  67.             var attribuetext = new Array();   
  68.                    
  69.                 attribuename = String(temp).split(",");   
  70.                 attribuetext = String(text).split(",");   
  71.                
  72.             var attribuetext = (Request.QueryString("text"));   
  73.             doxml.addXml(num,attribuename,attribuetext);   
  74.             doxml.saveXml();   
  75.             doxml.closeXml();   
  76.         }   
  77.         break;   
  78.         case "delete" : {   
  79.             doxml.initXml("dept.xml");                 
  80.             var num = parseInt(Request.QueryString("num"));   
  81.             var attribuename = Request.QueryString("name");   
  82.             var attribuetext = Request.QueryString("text");   
  83.             //var attribuename = new Array();   
  84.             //var attribuetext = new Array();                  
  85.                 //attribuename = String(temp).split(",");   
  86.                 //attribuetext = String(text).split(",");   
  87.             doxml.deleteXml(num,attribuename,attribuetext);   
  88.             doxml.saveXml();   
  89.             doxml.closeXml();          
  90.         }   
  91.         break;   
  92.         case "update" : {   
  93.             doxml.initXml("dept.xml");   
  94.                
  95.             var num = parseInt(Request.QueryString("num"));   
  96.             var attribuename1 = Request.QueryString("name1");   
  97.             var attribuetext1 = Request.QueryString("text1");   
  98.             var attribuename2 = Request.QueryString("name2");   
  99.             var attribuetext2 = Request.QueryString("text2");   
  100.             doxml.updateXml(num,attribuename1,attribuetext1,attribuename2,attribuetext2);   
  101.             doxml.saveXml();   
  102.             doxml.closeXml();   
  103.         }   
  104.         break;   
  105.         case "select" : {   
  106.             doxml.initXml("dept.xml");   
  107.                
  108.                
  109.             doxml.saveXml();   
  110.             doxml.closeXml();   
  111.         }   
  112.         break;   
  113.     }   
  114.        
  115.        
  116.        
  117.        
  118. </script>  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值