原生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>