2011-10-17 151 views
0

我使用JAXB編組對象到XML,現在生成的XML就像有沒有修改代碼來修改JAXB生成的xml前綴的方法?

<QueryServiceElement xmlns="http://tools.ding.com/query"> 
</QueryServiceElement> 

我要的是:

<ts1:QueryServiceElement xmlns:ts1="http://tools.ding.com/query"> 
</ts1:QueryServiceElement> 

由於代碼已經有多個地方共享的,所以我無法在JAXB Marshaller中使用mapper屬性,而我的jaxb也不支持mapper屬性,它會拋出異常,是否有任何方法通過修改xsd文件或jaxb模式綁定來實現此目的?

我嘗試了很多方法,但都不行。

+0

我修正了你的格式。 XML(通常的代碼)可以通過縮進4個空格來輸入和顯示。 –

回答

0

不幸的是,在結果XML中生成(或甚至使用)名稱空間前綴的行爲完全取決於編組,並且與XSD無關。

http://blogs.oracle.com/enterprisetechtips/entry/customizing_jaxb對如何處理自定義命名空間前綴生成有一個很好的解釋。從你的問題來看,你似乎已經意識到了這一點。它是一個JAXB 2.0+特性,所以如果你的jaxb實現不支持它,也許是時候獲得更高版本了?

+0

謝謝你的評論,這很有幫助。雖然我使用的jaxb版本是2.1 infact,但在調試後,我發現實現不支持mapper屬性,它引發PropertyException,我無法更新它,而因爲我將xml編組爲SoapElement,那麼之後我可以重置SoapElement中的一些前綴來解決這個問題。 – user999377