1. 程式人生 > >使用dom4j對xml檔案進行讀取和輸出操作

使用dom4j對xml檔案進行讀取和輸出操作

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();