All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
优化php代码42种方法总结_[PHP教程]
ASP.NET,2.0服务器控件之复合控件概述_[Asp.Net教程]
利用PHP自定义错误处理器处理出错信息_php资料_编程技术
C#中继承窗体概述及创建
php+mysql实现无限级分类_[PHP教程]
ASP.NET&Spring.NET&NHibernate最佳实践(一)——目录_[Asp.Net教程]
PHP实现上传文件生成小图加文字的实例_php资料_编程技术
Web2.0催生的蝴蝶效应,业务敏捷与SOA_.net资料_编程技术
给GridView中的数据加入超链接_[Asp.Net教程]
.net中前台javascript与后台c#相互调用_[Asp.Net教程]
Reading number is top 10 pictures
男人巳快沦落成动物了
这是男生笨么?
Kim jong il's mistress, national beauty JinYuJi actor2
9.3阅兵全景图3-外国方阵梯队和坦克方阵梯队
水晶头骨造型的酒瓶
哥斯达黎加的门将是如何练成的
Absolutely shocked. National geographic 50 animal photographys8
中国的十元人民币的秘密
NeedWallpaper2
西游四格漫画(五)
Download software ranking
网络管理员第三版
WebService在.NET中的实战应用教学视频 → 第4集
Unix video tutorial10
豪门浪荡史
变速齿轮3.26
Ashlynn Video3
Proficient in JavaScript
Tram sex maniac 2 (H) rar bag14
dreamweaver8中文版
Adobe Flash Player(IE) 10.0.32.18 浏览器专用的FLASH插件
归海一刀 published in(发表于) 2014/3/20 5:16:17 Edit(编辑)
用FSO操作xml_[XML教程]

用FSO操作xml_[XML教程]

用FSO操作xml_[XML教程]

试了一下,xmlDoc.save()行不同,就试着用fso做了出来。
整理一下,供大家discuss。


由于用js操作本地xml文件之后save时会permission denied,所以据我所知就只能通过FSO来做。而用FSO,基本上就与文件是否是xml无关。


xml文件:




one
one


two
two


...



var temp;//要操作的数据


//添加节点
function add(root,parent,child1,child2){
try{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fileOpen = fso.OpenTextFile("*.xml",1);
var fileContent = fileOpen.ReadAll();
fileOpen.close();


if(fileContent.toString().indexOf(temp) !=-1){
alert(temp+"was already in data.");
}else{
fileContent = fileContent.replace("","");
fileContent += "<"+parent+"><"+child1+">";
fileContent += ...;
fileContent += "<"+child2+">";
fileContent += ...;
fileContent += "";
var fileWrite = fso.OpenTextFile("*.xml",2)
fileWrite.write(fileContent);
fileWrite.close();
alert("add successfully!")
}
}catch(e){
alert("fail to add.");
}
}



//删除节点
function del(root,parent,child1,child2){
try{
if( confirm("are you sure to delete symbol:"+temp+"?" ) ){
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fileOpen = fso.OpenTextFile("*.xml",1);
var fileContent = fileOpen.ReadAll();
fileOpen.close();

var parentArr = fileContent.split("");
var symbolPos = -2;//不一定是2,只要<0即可
for (var i=0; i if(parentArr[i].indexOf(temp) != -1){
symbolPos = i;
continue;
}
parentArr[i] += "";
}
if (symbolPos == -2){
alert(temp+" not found in data.")
}else{
if(symbolPos == 0){
parentArr[0] = "<"+root+">";
}else{
parentArr.splice(symbolPos,1);
}
fileContent = parentArr.toString().replace(/,/g,"")
var fileWrite = fso.OpenTextFile("*.xml",2);
fileWrite.write(fileContent);
fileWrite.close();
alert("deleted successfully!");
}
}
}catch(e){
alert("fail to delete.");
}



基本思路:


添加节点
1:读入原先xml文件所有字符,保存为fileContent;
2:去除根结点的封闭节点,即;
3:fileContent += .....;
4:fileContent += ;
5:写入xml文件,关闭。
基本上就是用手动输入来代替xml的CreateNode。


删除节点
1:读入原先xml文件所有字符,保存为fileContent;
2:以parent来分割fileContent,保存为parentArr[];
3:循环搜索parentArr[i],利用indexOf(parentArr[i])来判断要 删除的节点里的内容 是否出现在parentArr[i];如果没有找到,则parentArr[i] += parent用来补上split时丢失的parent;如果找到了,则不用 += parent, 并且记录i的值;
4:parentArr.splice(i,1),删去节点;
5:parentArr.toString().replace(/,/g,""),用来去除逗号;
6:写入xml文件,关闭。


注意:要注意split带来的节点不易匹配的问题,所以 parentArr[i] += parent 时要小心。 当然split不一定按parent,哪个节点清晰就按哪个split。


看起来好像js操作本地文件没什么意义,呵呵,不过由于看到好像没有多少人用fso操作xml过,所以就试下,换换思路,平时fso用得也很少。欢迎批评指正~:D


作者:colordancer 来源:蓝色理想





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.