关于易于编码,可读性和可维护性的代码,性能和良好的设计实践,动态创建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注入到较大的静态模板中,则可能会使用预生成的结构.我认为这是一个边缘案例或者,我从来没有见过这种情况.