1. 程式人生 > >java解析xml技術(二)

java解析xml技術(二)

在上一篇java解析xml技術(一)中,我已經講完jdk中自帶解析xml的兩種方式dom和sax,現在我繼續講一講另一個java平臺下的xml解析工具dom4j。

dom4j就是dom for java的縮寫,它完全支援dom、sax、jaxp機制。它處理xml的方式如下:

List itemList=list.elements();
for(int i=0;i<itemList.size();i++){
      Element ele=(Element)itemList.get(i);
      System.out.println(ele.getText());
}
從程式碼中可以看出,dom4j解析與dom解析的思想基本相似,但dom4j的處理方式更簡單。

除此之外,dom4j還有兩個優勢:

 1.面向介面程式設計。dom4j採用面向介面程式設計的方式來處理xml文件解析,程式主要面向document、element等介面程式設計,至於這些介面的底層實現,程式設計師無須關心。

2.支援多種解析機制。這個是dom4j最大的優勢,因為它除了支援基本的dom和sax解析機制,還有xml pull parser 3.x來解析xml文件。程式設計師可以根據自己需要選擇適合的機制,但是無論哪一種機制,都是把xml文件轉化為dom4j樹。注意,它能夠用sax機制構建一顆dom4j樹,這樣就可以解決sax最大的缺點,不能重複訪問。但現在我介紹的是他的第三種機制xpp3Reader。

1.把dom4j.jar和xpp3.jar引用作為專案的庫。

2.建立XPP3Reader。

XPP3Reader reader = new XPP3Reader();
3.獲取xml的根節點。
Document doc = reader.read(new FileInputStream(new File(filename)));
Element root = doc.getRootElement();
4.進行xml解析。
parse(root);
public void parse(Element root){
      List el=root.elements();//獲得當前節點的所有子節點
      //遍歷每個子節點
      for(Object o:el)
      {
              Element element=(Element)o;
		//如果該節點含有文字資料,也就是葉節點		
		if(element.isTextOnly())
             {
		List attList=element.attributes();//獲得所有屬性
		for(Object e:attList){
			System.out.println(element.getQName().getName()+"元素的"+((Attribute)e).getQName().getName()+"屬性值為:"+((Attribute)e).getValue());
		}
		 //輸出子節點的文字資料
             System.out.println(element.getText());
	}
	else
		parse(element);
       }
}
看完程式碼是否對dom4j的簡單而心動呢,心動不如行動,趕快下載試試吧。http://download.csdn.net/detail/xanxus46/4444906