在实际应用的过程中总会遇到需要将某文件夹下的特点文件中的特定内容输出,现在我们来编写一个工具类来解决这个操作
关于这个操作,主要涉及到三个点:
(1)能够从文件工程下,识别文件中的mapper.xml文件
(2)能够读取mapper文件中指定节点内的sql语句
(3)将识别的sql语句输出到excel表格中
操作(1)详解:
输入文件路径后:
file.isDirectory()来判断当前文件是文件夹还是文件
String[] filelist = file.list();获取所有文件名的字符数组
File readfile = new File(filepath + "\\" + filelist[i]);拼接当前文件路径
readfile.getPath();当前文件路径
readfile.getAbsolutePath();当前文件的绝对路径
readfile.getName();当前文件的文件名
然后我通过字符串划分的方式(对当前文件路径以“.”划分文件路径+文件名和文件后缀),得以获取文件后缀,对文件后缀为.xml的文件执行xml解析的操作
操作(2)详解:
我采用的是DOM详解,DOM详解的具体内容这里不做解释了
创建DocumentBuilderFactory对象,通过DocumentBuilderFactory对象创建DocumentBulider对象
再通过DocumentBulider对象的parse方法加载books.xml文件:
Document document = db.parse("books.xml");
通过NodeList bookList = document.getElementsByTagName("book");获取所有book节点集合
bookList.getLength()获取节点个数
Node book = bookList.item(i);获取book节点
获取book节点的所有属性集合:NamedNodeMap attrs = book.getAttributes();
通过item(index)方法获取book节点的某一个属性:Node attr = attrs.item(j);
获取属性名:attr.getNodeName()
获取属性值:attr.getNodeValue()
解析book节点的子节点: NodeList childNodes = book.getChildNodes();
区分出text类型的node以及element类型的node:if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE)
获取了element类型节点的节点名:childNodes.item(k).getNodeName()
获取了element类型节点的节点值:childNodes.item(k).getFirstChild().getNodeValue()
获取element类型节点内去除节点的内容:childNodes.item(k).getTextContent()
操作(3)详解:
导出excel这一步操作需要导入poi的jar包
一个Excel文件对应一个workbook,一个workbook中有多个sheet组成,一个sheet是由多个行(row)和列(cell)组成。那么我们用poi要导出一个Excel表格的正确顺序应该是:
1、用HSSFWorkbook打开或者创建“Excel文件对象”:HSSFWorkbook wb = new HSSFWorkbook();
2、用HSSFWorkbook对象返回或者创建Sheet对象:HSSFSheet sheet = wb.createSheet(sheetName);
3、用Sheet对象返回行对象,用行对象得到Cell对象: HSSFRow row = sheet.createRow(0);
4、对Cell对象读写:HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
5、生成HSSFWorkbook
参考链接:
xml解析:https://www.cnblogs.com/longqingyang/p/5577937.html
读取某文件夹下的所有文件:https://www.cnblogs.com/vofill/p/6909780.html
导出数据到excel中:https://www.cnblogs.com/gudongcheng/p/8268909.html