更新時間:2020-11-30 17:36:46 來源:動力節(jié)點 瀏覽1267次
XML是一種用于標記電子文件使其具有結(jié)構性的標記語言。XML在不同的語言環(huán)境中解析方式都是一樣的,只不過實現(xiàn)的語法不同而已。說到4種XML的解析方式,有很多的知識點跟大家分享和討論,本文我們就來探討一下Java中的4種XML的解析方式,分別是那些?有什么用途等。
一、DOM解析
DOM的全稱是Document Object Model,也即文檔對象模型。在應用程序中,基于DOM的XML分析器將一個XML文檔轉(zhuǎn)換成一個對象模型的集合(通常稱DOM樹),應用程序正是通過對這個對象模型的操作,來實現(xiàn)對XML文檔數(shù)據(jù)的操作。通過DOM接口,應用程序可以在任何時候訪問XML文檔中的任何一部分數(shù)據(jù),因此,這種利用DOM接口的機制也被稱作隨機訪問機制。
DOM接口提供了一種通過分層對象模型來訪問XML文檔信息的方式,這些分層對象模型依據(jù)XML的文檔結(jié)構形成了一棵節(jié)點樹。無論XML文檔中所描述的是什么類型的信息,即便是制表數(shù)據(jù)、項目列表或一個文檔,利用DOM所生成的模型都是節(jié)點樹的形式。也就是說,DOM強制使用樹模型來訪問XML文檔中的信息。由于XML本質(zhì)上就是一種分層結(jié)構,所以這種描述方法是相當有效的。
DOM樹所提供的隨機訪問方式給應用程序的開發(fā)帶來了很大的靈活性,它可以任意地控制整個XML文檔中的內(nèi)容。然而,由于DOM分析器把整個XML文檔轉(zhuǎn)化成DOM樹放在了內(nèi)存中,因此,當文檔比較大或者結(jié)構比較復雜時,對內(nèi)存的需求就比較高。而且,對于結(jié)構復雜的樹的遍歷也是一項耗時的操作。所以,DOM分析器對機器性能的要求比較高,實現(xiàn)效率不十分理想。不過,由于DOM分析器所采用的樹結(jié)構的思想與XML文檔的結(jié)構相吻合,同時鑒于隨機訪問所帶來的方便,因此,DOM分析器還是有很廣泛的使用價值的。
二、SAX解析
SAX的全稱是Simple APIs for XML,也即XML簡單應用程序接口。與DOM不同,SAX提供的訪問模式是一種順序模式,這是一種快速讀寫XML數(shù)據(jù)的方式。當使用SAX分析器對XML文檔進行分析時,會觸發(fā)一系列事件,并激活相應的事件處理函數(shù),應用程序通過這些事件處理函數(shù)實現(xiàn)對XML文檔的訪問,因而SAX接口也被稱作事件驅(qū)動接口。
三、JDOM解析
JDOM是一個開源項目,它基于樹型結(jié)構,利用純JAVA的技術對XML文檔實現(xiàn)解析、生成、序列化以及多種操作。JDOM 直接為JAVA編程服務。它利用更為強有力的JAVA語言的諸多特性(方法重載、集合概念以及映射),把SAX和DOM的功能有效地結(jié)合起來。
JDOM使用具體類,而不使用接口,API大量使用了Collections。JDOM是用Java語言讀、寫、操作XML的新API函數(shù)。Jason Hunter 和 Brett McLaughlin公開發(fā)布了它的1.0版本。在直覺、簡單和高效的前提下,這些API函數(shù)被最大限度的優(yōu)化。
四、DOM4J解析
dom4j是一個Java的XML API,是微軟公司提供的用于解析xml的工具包,類似于jdom,用來讀寫XML文件的。dom4j是一個非常非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強大和簡單易用使用的特點,同時它也是一個開放源代碼的軟件,可以在SourceForge上找到它。
介紹完了4種XML的解析方式,我們再來看看這4種解析方式在Java中解析文件的表現(xiàn):
JDOM和DOM在性能測試時表現(xiàn)不佳,在測試10M文檔時內(nèi)存溢出。在小文檔情況下還值得考慮使用DOM和JDOM。雖然JDOM的開發(fā)者已經(jīng)說明他們期望在正式發(fā)行版前專注性能問題,但是從性能觀點來看,它確實沒有值得推薦之處。另外,DOM仍是一個非常好的選擇。DOM實現(xiàn)廣泛應用于多種編程語言。它還是許多其它與XML相關的標準的基礎,因為它正式獲得W3C推薦(與基于非標準的Java模型相對),所以在某些類型的項目中可能也需要它(如在JavaScript中使用DOM)。
SAX表現(xiàn)較好,這要依賴于它特定的解析方式-事件驅(qū)動。一個SAX檢測即將到來的XML流,但并沒有載入到內(nèi)存(當然當XML流被讀入時,會有部分文檔暫時隱藏在內(nèi)存中)。
總的來說4種XML的解析方式分別為DOM解析、SAX解析、JDOM解析、DOM4J解析,對于相關的知識已做了詳細的介紹,更確切的說,XML的簡單易于在任何應用程序中讀/寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言,XML也是目前最流行的可擴展標記語言之一,或許你還沒有完全領略到XML語言的風采,可以觀看本站的XML教程一睹XML語言的風采吧。