我必须为Java中的SOAP服务的输入构建XML文件。输入xml可以包含至少1000个标记。构建XML的最佳方法是什么?我有XSD文件,但使用JAXB有点复杂。 XMLStreamWriter是一个很好的选择吗?
答案 0 :(得分:0)
XMLStreamWriter是用于从Java应用程序编写XML的更好的API之一,但它有一些怪癖(例如它的命名空间处理有点奇怪),您可能会发现将它包装在便利API中是值得的知道你正在撰写的文件类型,例如它使用的名称空间。
XMLStreamWriter接口的一个优点是有很多实现可供选择。例如,Saxon有一个实现,可以让您完全控制所有XSLT / XQuery序列化选项和Saxon扩展(例如,您甚至可以控制属性的输出顺序!)
我遇到的所有基于事件的API的一个问题是,你迟早会发现自己忘记编写结束标记,这对调试来说非常棘手。使用包装器API强制您在endElement()的调用中包含元素名称对于调试很有用;如果打开调试,你可以保留一堆元素名称并检查endElement()是否正在编写正确的标记;关闭调试后你就放弃检查。
使用JAXB进行序列化当然是更高级别,但缺点是它可以减少控制。