本文目錄一覽:
xml在java項目中起到的作用具體是什麼?
java項目中,xml文件一般都是用來存儲一些配置信息
一般的編程, 多數用來存儲配置信息 . 拿JDBC來說,可以把數據庫連接字符串寫到xml,如果要修改數據源,只需要改xml就可以了,沒必要再去重新編譯java文件,而且,這些配置信息放在一起,別的人來讀你寫的代碼的時候,就方便了很多
框架中的xml , 除了配置信息 , 還可以寫一些對應關係,其實也是一種配置信息 .拿struts來說,xml配置的是頁面url對應後台java類(action)的關係,在配置和修改的時候,只需要改一個xml文件就可以了,沒必要一個個的查找java代碼
java項目完成之後,每個模塊應該都是獨立的,模塊之間的關係都可以使用xml來進行維護,spring就是這樣的一個框架
一個好的項目,需要有良好的可拓展性,如果把所有的邏輯關係還有配置信息都寫入代碼中,會使程序的可拓展性變差,為了解決這個問題,xml就可以對整個項目進行調度(spring)
還有使用xml作為數據儲存,不過用起來很少,多數還是用來存放配置信息
XML文件的java有哪些操作
共有4重,分別是:DOM、SAX、JDOM 、DOM4J
1)DOM(JAXP Crimson解析器)
DOM是用於平台和語言無關的方式表示XML文檔的官方W3C標準。DOM是以層次結構組織的節點或信息片斷的集合。這個層次結構允許開發人員在樹中尋找特定信息。分析該結構通常需要加載整個文檔和構造層次結構,然後才能做任何工作。由於它是基於信息層次的,因而DOM被認為是基於樹或基於對象的。DOM以及廣義的基於樹的處理具有幾個優點。首先,由於樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改。它還可以在任何時候在樹中上下導航,而不是像SAX那樣是一次性的處理。DOM使用起來也要簡單得多。
2)SAX
SAX處理的優點非常類似於流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由於應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對於大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。
選擇DOM還是選擇SAX? 對於需要自己編寫代碼來處理XML文檔的開發人員來說, 選擇DOM還是SAX解析模型是一個非常重要的設計決策。 DOM採用建立樹形結構的方式訪問XML文檔,而SAX採用的事件模型。
DOM解析器把XML文檔轉化為一個包含其內容的樹,並可以對樹進行遍歷。用DOM解析模型的優點是編程容易,開發人員只需要調用建樹的指令,然後利用navigation APIs訪問所需的樹節點來完成任務。可以很容易的添加和修改樹中的元素。然而由於使用DOM解析器的時候需要處理整個XML文檔,所以對性能和內存的要求比較高,尤其是遇到很大的XML文件的時候。由於它的遍歷能力,DOM解析器常用於XML文檔需要頻繁的改變的服務中。
SAX解析器採用了基於事件的模型,它在解析XML文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以激活一個回調方法,告訴該方法制定的標籤已經找到。SAX對內存的要求通常會比較低,因為它讓開發人員自己來決定所要處理的tag.特別是當開發人員只需要處理文檔中所包含的部分數據時,SAX這種擴展能力得到了更好的體現。但用SAX解析器的時候編碼工作會比較困難,而且很難同時訪問同一個文檔中的多處不同數據。
3)JDOM
JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互並且比使用DOM實現更快。由於是第一個Java特定模型,JDOM一直得到大力推廣和促進。正在考慮通過“Java規範請求JSR-102”將它最終用作“Java標準擴展”。從2000年初就已經開始了JDOM開發。
JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些類的Java開發者的使用。
JDOM文檔聲明其目的是“使用20%(或更少)的精力解決80%(或更多)Java/XML問題”(根據學習曲線假定為20%)。JDOM對於大多數Java/XML應用程序來說當然是有用的,並且大多數開發者發現API比DOM容易理解得多。JDOM還包括對程序行為的相當廣泛檢查以防止用戶做任何在XML中無意義的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學習DOM或JDOM接口都更有意義的工作。
JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(儘管它還可以將以前構造的DOM表示作為輸入)。它包含一些轉換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發布的開放源碼。
4)DOM4J
雖然DOM4J代表了完全獨立的開發結果,但最初,它是JDOM的一種智能分支。它合併了許多超出基本XML文檔表示的功能,包括集成的XPath支持、XML Schema支持以及用於大文檔或流化文檔的基於事件的處理。它還提供了構建文檔表示的選項,它通過DOM4J API和標準DOM接口具有並行訪問功能。從2000下半年開始,它就一直處於開發之中。
為支持所有這些功能,DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更複雜的API的代價,但是它提供了比JDOM大得多的靈活性。
在添加靈活性、XPath集成和對大文檔處理的目標時,DOM4J的目標與JDOM是一樣的:針對Java開發者的易用性和直觀操作。它還致力於成為比JDOM更完整的解決方案,實現在本質上處理所有Java/XML問題的目標。在完成該目標時,它比JDOM更少強調防止不正確的應用程序行為。
DOM4J是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。如今你可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,特別值得一提的是連Sun的JAXM也在用DOM4J.
java的xml的解析方式有什麼,他們的解析流程是怎麼樣的,有什麼區別
答:4種。(或者說是兩種,因為JDOM和DOM4J是DOM的兩個特殊情況)
1.SAX解析
解析方式是事件驅動機制!
SAX解析器,逐行讀取XML文件解析,每當解析到一個標籤的開始/結束/內容/屬性時,觸發事件。
可以在這些事件發生時,編寫程序進行相應的處理。
優點:
分析能夠立即開始,而不是等待所有的數據被處理。
逐行加載,節省內存,有助於解析大於系統內存的文檔。
有時不必解析整個文檔,它可以在某個條件得到滿足時停止解析。
缺點:
1.單向解析,無法定位文檔層次,無法同時訪問同一個文檔的不同部分數據(因為逐行解析,當解析第n行時,第n-1行)已經被釋放了,無法再對其進行操作)。
2. 無法得知事件發生時元素的層次, 只能自己維護節點的父/子關係。
3. 只讀解析方式, 無法修改XML文檔的內容。
2. DOM解析
是用與平台和語言無關的方式表示XML文檔的官方W3C標準,分析該結構通常需要加載整個 文檔和內存中建立文檔樹模型。程序員可以通過操作文檔樹, 來完成數據的獲取 修改 刪除等。
優點:
文檔在內存中加載, 允許對數據和結構做出更改。訪問是雙向的,可以在任何時候在樹中雙向解析數據。
缺點:
文檔全部加載在內存中 , 消耗資源大。
3. JDOM解析
目的是成為Java特定文檔模型,它簡化與XML的交互並且比使用DOM實現更快。由於是第一 個Java特定模型,JDOM一直得到大力推廣和促進。
JDOM文檔聲明其目的是“使用20%(或更少)的精力解決80%(或更多)Java/XML問題” (根據學習曲線假定為20%)
優點:
使用具體類而不是接口,簡化了DOM的API。
大量使用了Java集合類,方便了Java開發人員。
缺點:
沒有較好的靈活性。
性能不是那麼優異。
4. DOM4J解析
它是JDOM的一種智能分支。它合併了許多超出基本XML文檔表示的功能,包括集成的XPath 支持、XML Schema支持以及用於大文檔或流化文檔的基於事件的處理。它還提供了構建文檔表示的選項, DOM4J是一個非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一 個開放源代碼的軟件。如今你可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML。
目前許多開源項目中大量採用DOM4J , 例如:Hibernate。
XML文件的java操作有哪些
解析xml的方式方法有很多種
DOM方式解析XMLDom解析是將xml文件全部載入到內存,組裝成一顆dom樹,然後通過節點以及節點之間的關係來解析xml文件,與平台無關,java提供的一種基礎的解析XML文件的API,理解較簡單,但是由於整個文檔都需要載入內存,不適用於文檔較大時。2.SAX方式解析XML基於事件驅動,逐條解析,適用於只處理xml數據,不易編碼,而且很難同時訪問同一個文檔中的多處不同數據3.JDOM方式解析XML簡化與XML的交互並且比使用DOM實現更快,僅使用具體類而不使用接口因此簡化了API,並且易於使用4.DOM4j方式解析XMLJDOM的一種智能分支,功能較強大,建議熟練使用
但是要注意你解析xml的場景,dom這種解析方式是吧整個文檔加載到內存,解析、修改都比較方便,但是比較耗內存
sax方式基於事件驅動,解析不耗內存,
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/272241.html