在實際應用的過程中總會遇到需要將某文件夾下的特點文件中的特定內容輸出,現在我們來編寫一個工具類來解決這個操作
關於這個操作,主要涉及到三個點:
(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