2014-04-01 43 views
2

當使用JAXB編組,做我有影響哪個元素命名空間/空間前綴將宣佈JAXB編組:變化元件應聲明命名空間

當前,所有名稱空間前綴都是在根元素處聲明的,但由於處理我的XML的系統的奇怪侷限性,我需要在子元素(這仍然會導致有效的xml文檔)中聲明它們。

回到2006年,對official jaxb issue tracker and declined by a developer提出了類似但不相同的請求。我想知道這種情況在此期間是否發生了變化,或者是否存在某些解決方法。

任何幫助表示讚賞。

例子:

JAXB編組創建下列XML:

<outer xmlns:ns1="http://mydomain"> 
    <inner> 
    <ns1:data/> 
    </inner> 
</outer> 

雖然我需要有像 (ns1前綴是在根元素不聲明):

<outer> 
    <inner xmlns:ns1="http://mydomain"> 
    <ns1:data/> 
    </inner> 
</outer> 
+0

你能後預計XML請的樣本? – Priyesh

+0

@Priyesh我已更新問題 – MRalwasser

+0

您可能會覺得這很有用。 https://jaxb.java.net/nonav/2.2.1/docs/vendorProperties.html。檢查方法'getPreDeclaredNamespaceUris()'的文檔。 – Priyesh

回答

1

JAXB (JSR-222)沒有提供控制名稱空間聲明發生的方法。 JAXB提供程序傾向於將名稱空間放在根元素上(出於性能方面的原因),但它們不是必需的。

下面是我給類似問題的一個答案的鏈接,其中XMLStreamWriter被擴展以控制何時報告命名空間聲明。

+0

儘管我正在考慮將XMLStreamWriter方法作爲解決方法,但它似乎是解決我的問題的唯一兼容方法 - 謝謝。 – MRalwasser