詳細代碼參考(必看)
XML解析——Java中XML的四種解析方式
1.XML全稱是"(擴充标記語言)"
是一種用來結構化文檔和資料的通用且适應性強的格式,它不僅僅可以用于 WEB,而且可以被用于任何地方。說的明白一點就是:XML 被設計用來傳輸和存儲資料的。
在java中,很多配置檔案,都是xml檔案,比如說spring,或者mybatis.
XML的學習和使用都很簡單,我們先看它的文法.
1.1 所有 XML 元素都須有關閉标簽
1.2 XML 标簽對大小寫敏感
1.3 XML 必須正确地嵌套
1.4 XML 文檔必須有根元素
XML 文檔必須有一個元素是所有其他元素的父元素。該元素稱為根元素。
1.5 XML 的屬性值須加引号
1.6 特殊字元的使用方式(又叫實體引用)
在 XML 中,有 5 個預定義的實體引用:
1.7 XML 中的注釋
1.8 CDATA段
格式:< ! [ CDATA [ 文本内容 ] ] >
特殊标簽中的實體引用都被忽略,所有内容被當成一整塊文本資料對待.适用于有多個特殊字元的情況.
文法看完了,我們看看用法.
2.xml的解析
xml的解析方式有多種,在Java中,我們隻說兩種最常用的方式.
2.1 DOM解析方式
DOM:(Document Object Model, 即文檔對象模型) 是 W3C 組織推薦的處理 XML 的一種方式。DOM解析器在解析XML文檔時,會把文檔中的所有元素,按照其出現的層次關系,解析成一個個Node對象(節點)。其優缺點分别為:
優點:把xml檔案在記憶體中構造樹形結構,可以周遊和修改節點
缺點: 如果檔案比較大,記憶體有壓力,解析的時間會比較長
2.2 SAX解析方式
SAX(simple API for XML)是一種XML解析的替代方法。相比于DOM,SAX是一種速度更快,更有效的方法。它逐行掃描文檔,一邊掃描一邊解析。而且相比于DOM,SAX可以在解析文檔的任意時刻停止解析。 其優缺點分别為:
優點: 解析可以立即開始,速度快,沒有記憶體壓力
缺點: 不能對節點做修改
2.3 讀取XML
Java中常用的操作xml的一個包是dom4j的包.
dom4j是一個非常優秀的Java XML API,具有性能優異、功能強大和極端易用的特點,同時它也是一個開放源代碼的軟體。使用dom4j來實作對XML文檔的解析,詳細過程如下:
2.3.1 使用dom4j需要導入dom4j對應的jar包。
2.3.2 建立SAXReader類的對象來實作讀取XML文檔,代碼如下:
2.3.3 使用SAXReader類的read方法擷取Document對象,Document 對象是一棵文檔樹的根,可為我們提供對文檔資料的最初(或最頂層)的通路入口,代碼如下:
2.3.4 使用Document對象的getRootElement方法擷取要解析的XML文檔的根元素,該方法傳回值類型為Element。Element 對象表示 XML文檔中的元素。元素可包含屬性、其它元素或文本。如果元素含有文本,則在文本節點中表示該文本,代碼如下:
2.3.5 使用Element對象提供的方法繼續解析XML文檔,例如:其elements方法用來擷取目前元素下的所有子元素,代碼如下:
2.3.6 最後周遊list集合即可.
2.4 寫一個XML檔案.
2.4.1 使用DocumentHelper類的靜态方法createDocument建立文檔對象Document,代碼如下所示:
2.4.2 使用Document類的addElement方法,建立根節點<list>,代碼如下所示:
2.4.3 添加子元素
然後為one這個元素指派
2.4.4 :生成檔案
至此.xml 讀取與寫出,闡述完畢.