使用dom4j對xml檔案進行讀取和輸出操作
阿新 • • 發佈:2019-01-04
1.xml檔案的讀取
讀取xml檔案的方式有兩種,一種是面向模型的DOM方式,一種是面向事件的SAX方式
DOM方式原理:一次性的將xml文件加入記憶體,在記憶體中形成一顆dom樹,然後通過語言對樹的節點進行操作。
顯然這種操作查詢元素快,但是一次性的將檔案載入進來,要是小還行,檔案大的時候會增大記憶體負擔的,因此這種方式最好是解析小的xml檔案的時候用
SAX方式原理:邊讀邊解析,按照從做往右從上往下的順序解析。
由於解析過的節點不能再次利用,要想使用還得再次解析,所以效率相對來說比較低,但只有事件觸發了才會去讀取檔案,所以記憶體不會很大。
兩種方式,各有優缺點,誰也不能代替誰,舉個簡單的例子吧,就像生活中的自行車無法取代汽車,汽車無法取代自行車一樣,兩者各有優勢。根據具體需求選擇。
2.我們來看一個案例,首先是對maven的pom檔案配置
<dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> <version>1.1-beta-11</version> <exclusions> <exclusion> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>
2.對xml檔案的讀取
File file=new File(SourceFilePath);
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(file);
//獲取某一個節點
Node nodeVersion=document.selectSingleNode("//Info/Version");
//取得該節點的值
String text=nodeVersion.getText();
//獲取多個節點
List<Element> list=document.selectNodes("//Info/Files/File");
//進行迴圈
for(int i=0;i<list.size();i++){
Element element=list.get(i);
Element nElement=element.element("Name");
}
3.對xml檔案進行輸出
將生成的document轉換為xml檔案格式輸入到指定路徑可以使用下面的方法進行
OutputFormat format = OutputFormat.createPrettyPrint();
//輸出到指定目錄
XMLWriter writer = new XMLWriter(new FileOutputStream(destFilePath),format);
writer.write(document);
writer.close();