2016-06-06 49 views
0

我必須爲Java中的SOAP服務輸入構建一個XML文件。輸入xml可以包含至少1000個標籤。什麼是構建XML的最佳方式?我有XSD文件,但使用JAXB有點複雜。 XMLStreamWriter是一個很好的選擇嗎?大型XML文件構建器的最佳實踐

+1

如果您有XSD文件,則可以使用JAXB片段和流以及對象的迭代器。如果感興趣,我會發布代碼。 –

+0

這取決於有多少信息可能會改變。如果只有一行數千人發生變化,靜態文件可能是最好的解決方案。平均修改我建議freemarker,只有在大規模修改一個複雜的框架應該是解決方案。 –

+0

xml文件大小有多大?你可以爲jvm分配多少堆內存? –

回答

0

XMLStreamWriter是用於從Java應用程序編寫XML的更好的API之一,但它有一些怪癖(例如,它的命名空間處理有點奇怪),您可能會發現將它包裝在一個方便的API中是值得的知道您正在編寫的文檔類型,例如它使用什麼命名空間。

XMLStreamWriter接口的優點之一是有很多實現可供選擇。例如,Saxon有一個實現,可以讓您完全控制所有XSLT/XQuery序列化選項和Saxon擴展(例如,甚至可以控制屬性的輸出順序!)

我遇到的所有事件基於API的是,遲早你會發現自己忘記寫一個結束標籤,而且調試起來可能非常棘手。使用包裝API強制你在endElement()的調用中包含元素名稱對調試非常有用;如果打開調試,則可以保留一堆元素名稱並檢查endElement()是否寫入了正確的標記;在調試關閉的情況下,您只需放下此檢查。

使用JAXB的序列化當然是更高層次的,但缺點是它會減少控制權。