深圳java培训:构建xml文档--【千锋】

深圳java培训:构建xml文档--【千锋】

10年的沧州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整沧州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“沧州网站设计”,“沧州网站推广”以来,每个客户项目都认真落实执行。

我需要从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())。


网页标题:深圳java培训:构建xml文档--【千锋】
本文路径:http://myzitong.com/article/gchppp.html