您现在的位置是:首页 > 文章详情

构建xml文档

日期:2019-10-30点击:344

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

原文链接:https://yq.aliyun.com/articles/724355
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章