• 原生js 遍历文件夹分析xml并保存


    其实这种功能,网上相关的代码多的是,我也是因为今天正好要用到这个功能,所以临时写了下,放这里保存下,以便将来自己或者别人用的上吧。

    当然我写的是一个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>
  • 相关阅读:
    去逛了一下浙东大峡谷
    终于开始释然
    其实在天堂AS IT IN HEAVEN
    寝室全景照
    黑与白
    努力下的意外
    文曲星的存在意义
    强烈推荐文章,给那些头脑发晕的看看
    学友演唱会
    最喜欢的歌
  • 原文地址:https://www.cnblogs.com/zyskr/p/10736349.html
Copyright © 2020-2023  润新知