最近由于工作的要求,需要用javascript对xml文件进行操作,虽说比较麻烦,但基本还是可以实现,现将初稿贴出来,希望大家能够提出保贵的意见:
要操作的文件dept.xml
js 代码
- "1.0" encoding="utf-8"?>
- <message></message>
- <country></country>
- "China" Chinese="中国"/>
- "Afghanistan" Chinese="阿富汗"/>
- "Albania" Chinese="阿尔巴尼亚"/>
- "Algeria" Chinese="阿尔及利亚"/>
- "Andorra" Chinese="安道尔"/>
对XML文件操作的javascript代码:
js 代码
- <script language=< span="">"javascript" runat="server">
- var objxml = "";
- var doxml = {
- initXml : function(url){
- objxml = Server.CreateObject("Msxml2.DOMDocument");
- objxml.load(Server.MapPath(url));
- },
- addXml : function(num,attributename,attributetext){
- var docxml = objxml.selectSingleNode("message");
- var newNode = docxml.childNodes.item(num);
- var newNodeChild = objxml.createElement("list");
- for(var i=0;i<attributename.length;i++){ <="" span="">
- newNodeChild.setAttribute(attributename[i],attributename[i]);
- }
- newNode.appendChild(newNodeChild);
- },
- deleteXml : function(num,attribuename,attributetext){
- var docxml = objxml.selectSingleNode("message");
- var delNode = docxml.childNodes.item(num);
- var delChilds = delNode.childNodes;
- for(var i = 0; i<delchilds.length;i++){ <="" span="">
- if(delChilds[i].getAttribute(attribuename) == attributetext) delNode.removeChild(delChilds[i]);
- }
- },
- updateXml : function(num,attribuename1,attribuetext1,attribuename2,attribuetext2){
- var docxml = objxml.selectSingleNode("message");
- var updNode = docxml.childNodes.item(num);
- var delChilds = updNode.childNodes;
- for(var i=0;i<delchilds.length;i++){ <="" span="">
- if(delChilds[i].getAttribute(attribuename1) == attribuetext1)
- delChilds[i].setAttribute(attribuename2,attribuetext2)
- }
- },
- selectXml : function(num,attribuename1,attribuetext1,attribuename){
- var docxml = objxml.selectSingleNode("message");
- var selNode = docxml.childNodes.item(num);
- var delChilds = selNode.childNodes;
- for(var i=0;i<delchilds.length;i++){ <="" span="">
- if(delChilds[i].getAttribute(attribuename1) == attribuetext1)
- Response.Write(delChilds[i].getAttribute(attribuename));
- }
- },
- saveXml : function(){
- objxml.save(Server.MapPath("dept.xml"));
- },
- closeXml : function(){
- objxml = null;
- }
- }
- var act = Request.QueryString("way");
- function trim(str){
- var temp = "";
- str = '' + str;
- splitstr = str.split(" ");
- for(i = 0; i < splitstr.length; i++)
- temp += splitstr[i];
- return temp;
- }
- switch(trim(act)){
- case "add" : {
- doxml.initXml("dept.xml");
- var num = parseInt(Request.QueryString("num"));
- var temp = (Request.QueryString("name"));
- var text = (Request.QueryString("text"));
- var attribuename = new Array();
- var attribuetext = new Array();
- attribuename = String(temp).split(",");
- attribuetext = String(text).split(",");
- var attribuetext = (Request.QueryString("text"));
- doxml.addXml(num,attribuename,attribuetext);
- doxml.saveXml();
- doxml.closeXml();
- }
- break;
- case "delete" : {
- doxml.initXml("dept.xml");
- var num = parseInt(Request.QueryString("num"));
- var attribuename = Request.QueryString("name");
- var attribuetext = Request.QueryString("text");
- //var attribuename = new Array();
- //var attribuetext = new Array();
- //attribuename = String(temp).split(",");
- //attribuetext = String(text).split(",");
- doxml.deleteXml(num,attribuename,attribuetext);
- doxml.saveXml();
- doxml.closeXml();
- }
- break;
- case "update" : {
- doxml.initXml("dept.xml");
- var num = parseInt(Request.QueryString("num"));
- var attribuename1 = Request.QueryString("name1");
- var attribuetext1 = Request.QueryString("text1");
- var attribuename2 = Request.QueryString("name2");
- var attribuetext2 = Request.QueryString("text2");
- doxml.updateXml(num,attribuename1,attribuetext1,attribuename2,attribuetext2);
- doxml.saveXml();
- doxml.closeXml();
- }
- break;
- case "select" : {
- doxml.initXml("dept.xml");
- doxml.saveXml();
- doxml.closeXml();
- }
- break;
- }
- </script>