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