Posted on 2006-03-20 20:08
fortune 閱讀(708)
評論(0) 編輯 收藏 所屬分類:
java技術
今天就簡單介紹一下處理XML文檔的常用東西,關于xml document的話,w3c的document結構確實讓人感到頭痛,所以很多開發者都轉向使用其他的document對象。其中dom4j是一個成功的開源項目,從java的對象概念的角度出發,按照通常的使用規范來處理xml文檔,可以說,在java社區里,dom4j使用的最為廣泛了,以下是dom4j的官方地址:
http://www.dom4j.org/。如,眾所周知的o/r mapping工具hibernate就是使用dom4j來解釋xml文檔的(ejb3.0就是基于hibernate實現的),由此可見,dom4j的使用廣泛之處。dom4j的一個最大的實用之處是支持XPath表達式的查詢,這樣,我們可以在dom4j的Document結構中使用這種簡單的表達式就可以快速找到我們需要的某個元素了。
????? 下載dom4j開發包:http://sourceforge.net/project/showfiles.php?group_id=16035。在前言我已說過,由于都采用了使用類似的發布框架,所以對程序員來說極為容易上手。下載完dom4j之后,在dom4j的docs/cookbook.html里有詳細的入門手冊,而在src/samples里面則是一些樣例,src/test文件夾里面是JUnit的測試例子。這些東西都已經很詳細的介紹了怎樣進行入門介紹。這里,我打算小結一下dom4j的Document結構:
????? 首先,要明白的是dom4j是基于面向接口的樣式來實現處理xml文檔的,這種方法在面向對象的領域里特別常見。使用的常用接口都封裝在org.dom4j包里,而怎樣讀取xml文檔呢?則是使用一系列的api函數,這些常用方法都封裝在org.dom4j.io。
(1)從面向對象的角度來看,dom4j對XML的文檔結構進行了封裝,從一個文檔的角度來說(我們不考慮內存中的數據結構的話),可以簡單的把一個XML文檔就當做一個org.dom4j.Document:
???????? 我們現在使用dom4j的Document結構,而不是使用w3c的Document結構,讀取一個文件,在內存中構造一個Document結構:Document doc=new SAXReader().read(new File("...")); 就可以獲得一個Document結構。注意,dom4j同時也對w3c的Document結構,SAX Event的支持,具體的使用可以參看docs/cookbook.html中的內容。這里不一一介紹。
(2)獲得一個dom4j的Document結構之后,從面向對象的角度,我們自然而然的想起的是XML中的element,dom4j根據這種想法對這些進行了封裝org.dom4j.Element類就是對這些進行了封裝,從Document中獲得Element:
???????? 首先獲得一個root元素,Element root=doc.getRootElement();而其他的元素也可以根據這個root元素來獲得。
(4)一個元素的屬性的話,則是Attribute,在Element類中,有非常容易操作的方法添加于獲得Attribute,addAttritue();attribute()等函數原型都提供了操作。
(5)dom4j同時也提供了在內存中的數據結構的構造,不降低處理的靈活性。如:Node就是對一個xml文檔樹的節點的封裝,而Branch則是對一個樹的分支的封裝,通過使用這些,可以靈活的按照樹的結構來處理xml文檔。敏感的朋友可能會注意到,Document和Element都是Node與Branch的子類,這種不同功能的領域的封裝可以按照對象的處理與數據結構的結合,靈活的處理xml文檔。
???????? 以上是一點簡單的介紹入門dom4j的Document結構,詳細的請看docs/cookbook.html文件,里面太詳細了,:-)。