您好,登錄后才能下訂單哦!
深圳java培訓:構建xml文檔--【千鋒】
我需要從Java對象層次結構構建一個XML文檔。Java類和XML格式都是固定的。所以我不能使用像 XStream 這樣的XML序列化器:它將XML格式基于Java類。同樣,像 JAXB 這樣的Java XML綁定技術也不行,因為它從XML模式創建Java類[ed:但見下文]。我需要一個手動方法。
低技術的StringBuilder路由會導致易碎和錯誤的代碼(至少對我來說!)。
像 JAXP 或 JDOM 這樣的API可以產生更健壯的代碼,但這些代碼非常冗長。
Groovy 有一個優雅的 MarkupBuilder :
def writer = new StringWriter ()
def xml = new MarkupBuilder ( writer )
xml . records () {
car ( name : 'HSV Maloo' , make : 'Holden' , year : 2006 ) {
country ( 'Australia' )
record ( type : 'speed' , 'Production Pickup Truck with speed of 271kph' )
}
car ( name : 'P50' , make : 'Peel' , year : 1962 ) {
country ( 'Isle of Man' )
record ( type : 'size' , 'Smallest Street-Legal Car at 99cm wide and 59 kg' )
}}
其他語言(如 Ruby )有更好的語言,盡管我想留在純Java中。似乎有一些Java的新的XML構建器,例如 practicalxml 和James Murty的 xmlbuilder 。
在Java中構建XML文檔的更優雅的方法是什么?
概要:
Jon Doe建議 dom4j 和 jdom 。
CurtainDog推薦使用JAXB,而jherico則告訴我這是一個有針對性的建議:然后你可以使用Dozer來映射我當前的JavaBeans和JAXB JavaBeans。
thaggie建議 JIBX 并同意CurtainDog和jherico綁定技術實際上是實用的。
StaxMan推薦 StaxMate 。
在我看過的東西中,practicalxml和James Murty的xmlbuilder似乎是最簡潔的構建器,雖然比較新穎。像JAXB這樣的綁定技術似乎提供了額外的安全/自動化。在主流選擇中, dom4j 看起來很體面,但仍然有點冗長。它提供了一個“流暢的接口”(mutators返回對變異對象的引用,以便它們可以鏈接在一起),我喜歡它:
public Document createDocument () {
Document document = DocumentHelper . createDocument ();
Element root = document . addElement ( "root" );
Element author2 = root . addElement ( "author" )
. addAttribute ( "name" , "Toby" )
. addAttribute ( "location" , "Germany" )
. addText ( "Tobias Rademacher" );
Element author1 = root . addElement ( "author" )
. addAttribute ( "name" , "James" )
. addAttribute ( "location" , "UK" )
. addText ( "James Strachan" );
return document ;}
為了簡明起見,你可以在這個API上封裝一個精簡的外觀,為這些方法中的一些提供簡潔的同義詞(例如,attr()而不是addAttribute())。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。