统计java中xml中的action的id

101 阅读1分钟

背景:

公司需要重构java后端项目,需要统计所有功能的action的id,类似下面这种
这只是一个最小的xml中的内容,全部加起来大概有几千+

image.png

想法:

刚开始想着用python来写,后来想起来自己是前端工程师为什么不用js来实现呢,说干就干.

大致流程:

  1. 将目录下的xml文件拷贝出来,用小工具将文件名修改成txt,方便读取

image.png 2. 开始书写js代码 获取文件下的所有文件路径

/**
 * 递归遍历,获取指定文件夹下面的所有文件路径
 */
function getAllFiles(filePath) {
  let allFilePaths = [];
  if (fs.existsSync(filePath)) {
    const files = fs.readdirSync(filePath);
    for (let i = 0; i < files.length; i++) {
      let file = files[i]; // 文件名称(不包含文件路径)
      let currentFilePath = filePath + "/" + file;
      let stats = fs.lstatSync(currentFilePath);
      if (stats.isDirectory()) {
        allFilePaths = allFilePaths.concat(getAllFiles(currentFilePath));
      } else {
        allFilePaths.push(currentFilePath);
      }
    }
  } else {
    console.warn(`指定的目录${filePath}不存在!`);
  }

  return allFilePaths;
}

3.读取每个文件的内容通过正则进行匹配

function main(srcDir,outFileName) {
  let allFiles = getAllFiles(srcDir);
  let reg = /<Action id=(.*?)>/g;
  let out = "";
  console.log(`文件数量:${allFiles.length}`);
  for (let i = 0; i < allFiles.length; i++) {
    // 同步读取文件内容
    let content = fs.readFileSync(allFiles[i], "utf-8").toString();
    let result = "";
    while ((result = reg.exec(content))) {
      out += "\r\n" + result[1];
    }
  }
  //写出到文件夹
  fs.writeFileSync(outFileName, out);
}
  1. 大功告成

image.png

总结

虽然并没有什么技术含量.前端新人第一次通过所学知识完成任务,还是有一定成就感.大佬嘴下留情!!