使用Java编写XML的最佳做法和设计指南?

已经有几次我遇到了一个需要生产 XML(比较小的)的任务.每次我徘徊:

关于易于编码,可读性和可维护性的代码,性能和良好的设计实践,动态创建XML文档的最佳做法是什么?

例如:

连接字符串是否更好?或者创建一个DOM树并进行填充?
>(“程序上”)是否更好地卷起构建XML的线,或者有很多方法处理其文档的部分?
>最好是通过工具(哪个?)或每次从头开始生成XML的骨干网?

我会欣赏,如果你可以分享一些参考,有一个关于这个问题的知名话题吗?

解决方法

is it better to concatenate strings,or create a DOM tree and populate it?

XML比它看起来更棘手.不要通过连接字符串来构建它.在运行文档时应使用StAX javax.xml.stream.XMLStreamWriter.在内存使用方面,即使是大型文档也是非常合理的.

对于较小的文档,创建一个DOM树是可行的,但实际上更喜欢XMLStreamWriter.

对于较小的文档,您还可以使用XML绑定框架,例如JAXB,它与构建DOM树有效地相同,但允许您根据业务域而不是XML的方式编写代码.作为一个奖励,您可以使用与泽西相同的JAXB注释来生成JSON输出以及XML.

is it better to (‘procedurally’) consequently roll up the lines building the XML or have numerous methods handling their portion of the document?

这是上下文的您的目标应该是最大限度地提高源代码的可读性.在XML结构中重复部分往往会获得自己的方法. XML的长而扁平的部分往往会使用长时间的Java程序.

一些不寻常的缩进可能会使代码更易读:

private void write(XMLStreamWriter w) {
    //...
    w.writeStartElement("parentTag");
        w.writeStartElement("nestedTag"); 
        w.writeCharacters("body 1");
        w.writeEndElement(); 
    w.writeEndElement();
}

…但是这是边框真的很接近你应该提取一个帮助方法的点.

is it better to have the backbone of the XML generated via tool (which?) or every time start from a scratch?

使用XMLStreamWriter方法,或者使用JAXB等绑定框架,我看不到需要使用模板系统或类似的东西.这些框架完全有能力编写<?xml version =“1.0”?>前言.

如果您必须将一小部分生成的XML注入到较大的静态模板中,则可能会使用预生成的结构.我认为这是一个边缘案例或者,我从来没有见过这种情况.

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...