纯js 遍历文件夹分析xml并保存
程序员文章站
2022-12-26 08:13:08
其实这种功能,网上相关的代码多的是,我也是因为今天正好要用到这个功能,所以临时写了下,放这里保存下,以便将来自己或者别人用的上吧。 当然我写的是一个hta文件。下面是完整js代码,都是调用activex控件去做事,所以也没有考虑浏览器兼容什么的。 代码主要分为: 1.选择目标文件夹 2.遍历目标文件 ......
其实这种功能,网上相关的代码多的是,我也是因为今天正好要用到这个功能,所以临时写了下,放这里保存下,以便将来自己或者别人用的上吧。
当然我写的是一个hta文件。下面是完整js代码,都是调用activex控件去做事,所以也没有考虑浏览器兼容什么的。
代码主要分为:
1.选择目标文件夹
2.遍历目标文件夹中的文件
3.根据需要解析xml文件里内容
4.把解析出来的文件内容存到txt中
<script type='text/javascript'> var fso; //入口方法 div#id=tips 显示提示信息 function st(){ document.getelementbyid('tips').innertext='开始分析,请稍等'; settimeout( dosth, 100 ) } //遍历文件夹方法 function dosth(){ try{ fso=new activexobject("scripting.filesystemobject"); }catch(e){ alert(e.message); } deletelog(); writetxt('xx,xx,xx'); var path=document.getelementbyid('path').innertext; var f = fso.getfolder(path); var fc = new enumerator(f.files); for (; !fc.atend(); fc.movenext()) { readxml(fc.item().name); } } //读取xml方法 function readxml(file) { var xmldoc; xmldoc = new activexobject('microsoft.xmldom');//ie浏览器 xmldoc.async = false; file=document.getelementbyid('path').innertext+'\\'+file; xmldoc.load(file); var target=xmldoc.getelementsbytagname("target") ; for(var i=0;i<target.length;i++){ var vue=''; if(target[i].getelementsbytagname('ip').length>0){ vue=target[i].getelementsbytagname('ip')[0].childnodes[0].nodevalue; } vue+=','; if(target[i].getelementsbytagname('port').length>0){ vue+=target[i].getelementsbytagname('port')[0].childnodes[0].nodevalue; } vue+=','; if(target[i].getelementsbytagname('protocol').length>0){ vue+=target[i].getelementsbytagname('protocol')[0].childnodes[0].nodevalue; } writetxt(vue); } settimeout( function(){ document.getelementbyid('tips').innertext='分析完成,生成result.txt在所选文件夹中'; },100) } //内容写入txt方法 function writetxt(vue){ if (!fso.fileexists(document.getelementbyid('path').innertext+ "\\result.txt")) { fso.createtextfile(document.getelementbyid('path').innertext+ "\\result.txt",true); } var f = fso.opentextfile(document.getelementbyid('path').innertext+ "\\result.txt", 8, true); f.writeline(vue); f.close(); } //结果删除方法 function deletelog() { var strfolder =document.getelementbyid('path').innertext+ "\\result.txt"; if (fso.fileexists(strfolder)) { var f1 = fso.getfile(strfolder);//获取指定文件,接下来删除 f1.delete(); } } //弹出文件夹选择的方法 ,button点击时弹出,选择的文件夹路径保存到div#id=path function filesel(){ var filepath; var objsrc = new activexobject("shell.application").browseforfolder(0, '请选择保存路径', 0, ''); if (objsrc != null) { filepath = objsrc.items().item().path; document.getelementbyid('path').innertext=filepath; if (filepath.charat(0) == ':') { alert('请选择文件夹.'); return; } } } </script>
上一篇: 可变对象与不可变对象
下一篇: php 传值赋值与引用赋值的区别