天天看點

XML 解析(二) JDOM, DOM4J,Digester

延續XML解析的幾種方式(一)的代碼格式,我們來寫一個用JDOM解析XML的方法,這個方法首先依賴于外部包org.jdom。讓我們仔細看看代碼,知道他解析XML的簡單和效率。

就這麼簡單,我們就實作了之前很多行代碼的XML的解析,根據不要重複造輪子的經驗,我們沒必要自己再寫個什麼東西來解析XML,就用現成的JDOM包,兩三句代碼就搞定一個XML解析了。寫入XML快,解析XML更快,痛快吧,童鞋們!

為減少DOM、SAX的編碼量,JDOM才出現的;優點:20-80原則,極大減少了代碼量。使用場合:要實作的功能簡單,如解析、建立等,但在底層,JDOM還是使用SAX。

也許你要說JDOM已經很友善了,但是趁熱打鐵,讓我們再上一段DOM4J的代碼

怎樣,dom4j是不是又讓你眼前一亮菊花一緊? 如此友善的XML解析包。如此簡單的代碼,幾句話将一個XML檔案給解析出來。DOM4J的代碼,我沒有加一句注釋,其實不需要注釋你也應該很容易看出來每一步在做什麼,真實的實作了所見即所得。

DOM4J 是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟體。如今你可以看到越來越多的 Java 軟體都在使用 DOM4J 來讀寫 XML,特别值得一提的是連 Sun 的 JAXM 也在用 DOM4J。

這裡,我還要給大家介紹一種友善的XML解析方法,這種方法更符合面向對象的編碼原則,更容易讓Java程式員所了解,就是Apache所推出的Digester的解析方式,這種方式需要依賴于commons-digester和commons-collections包。代碼如下:

首先我們定義一個Employee類,這個類中的屬性就是XML中Employee标簽下的字段。這個類很簡單,就是個簡單的javabean,有getter,setter方法和一個無參構造方法。

然後定義一個Employees類,這個類中隻有一個ArrayList成員變量,該成員變量中存儲的就是每個Employee對象。我們在代碼中也給出了添加對象和擷取List中對應Employee的方法,代碼如下:

in

有了這兩個對象對應XML的兩個主要節點,我們就可以開始寫Digester解析代碼了

從上面的代碼中可以看出,Digester是将XML标簽映射成實際的javabean,然後通過他自身的幾個簡單方法将其封裝成一定結構的樹來解析的。該方法容易被面向對象開發者所了解,但是如果XML過于複雜的話,會産生很多映射對象,開銷也相應的增大了。

注意: 以上幾段代碼中(除了Digester)都出現過Element,Document等等字段,我們使用DOM的時候就需要引入DOM包下面的這些字段,使用JDOM的時候需要引入JDOM包下面的這些字段,使用DOM4J的時候引入的應該是DOM4J包下面的這些字段,不要引入錯誤,導緻編譯都通不過喲。

最後,同樣貼出測試代碼

最後附上XML解析需要用到的包,大家可以嘗試一下友善的解析了!