最近在实习中遇到一个问题,在一个java工程中有许多的xml文件,需要对特定路径的.xml文件进行解析。
.xml文件的主要部分是元素,元素由开始标签,元素内容,结束标签部分组成。比如<book>雪中悍刀行</book>,注意到xml文件可以理解为一个树形结构,而Java工程形成的文件目录也是一个树形结构,树形结构的一种常用的处理方式就是递归。
首先获取给定路径下的所有特定路径下的.xml文件。例如我现在需要获取包含“src\\main”路径的所有.xml文件。部分关键代码如下:
public static void dfs(String dirName){
File file = new File(dirName);
if(file.isDirectory()) {
//获取该文件夹里面的文件
String[] listFiles = file.list();
for(int i=0;i<listFiles.length;i++){
String fileName = listFiles[i];
dirName=dirName+"\\"+fileName;
dfs(dirName);
int fileNameLen=fileName.length();
int dirNameLen=dirName.length();
dirName=dirName.substring(0,dirNameLen-fileNameLen-1);
}
}
else {
//判断他是不是以xml形式结尾
if(isXmlDocument(dirName)){
listFilePath.add(dirName);
}
}
}
private static boolean isXmlDocument(String fileName){
//过滤出对应目录里面的xml文件
return fileName.endsWith(".xml")&&fileName.contains("\\src\\main");
}
上述代码能够得到一个满足条件的List集合。接下来,将路径传给.xml解析程序即可。
具体的.xml解析需要的结果根据不同的业务要求编写即可,dfs代码也还是比较容易编写的。因涉及公司业务,相关代码不再贴出。