欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

纯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>