歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> DOM解析XML格式文件實例

DOM解析XML格式文件實例

日期:2017/3/1 9:08:10   编辑:Linux編程

以下給4種常見的xml文件的解析方式的分析對比:

DOM DOM4J JDOM SAX

解析XML文件的幾種方式和區別答:

Dom解析 在內存中創建一個DOM樹,該結構通常需要加載整個文檔然後才能做工作。由於它是基於信息層次的,因而DOM被認為是基於樹或基於對象的,樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改能隨機訪問文件內容,也可以修改原文件內容.

SAX解析 SAX處理的優點非常類似於流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。SAX解析器采用了基於事件的模型,它在解析XML文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以激活一個回調方法,告訴該方法制定的標簽已經找到。而且,由於應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對於大型文檔來說是個巨大的優點線性解析,不能隨機訪問,也無法修改原文件

JDOM解析 JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互並且比使用DOM實現更快.JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些類的Java開發者的使用。

DOM4j解析 DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復雜的API的代價,但是它提供了比JDOM大得多的靈活性。

最後相比之下選擇了dom4j對其經行解析。

下面是xml文件的一部分:

考慮到上面的復雜因素,從面向對象出發,我定義了以下三個實體類對象:

每個對象的定義都比較簡單:ResultSet.class,RowDetail.class,RowMaster.class的定義分別如下:

其中用到的最為關鍵的技術當然是xpath表達式的書寫了,詳情請參考:http://www.linuxidc.com/Linux/2016-12/138302.htm,下面我就直接給出我的解析代碼:

以下是測試查看List<ResultSet> resuList中部分數據的輸出:

Copyright © Linux教程網 All Rights Reserved