2012-10-09 173 views
1

我想將對象編組到XML中,並且遇到名稱空間前綴(我不想有任何前綴)的問題。XML名稱空間前綴不能爲空

我正在使用bindigs文件來自定義生成的類。 生成的package-info.java文件包含以下內容:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.test.com", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED, xmlns = { 
@javax.xml.bind.annotation.XmlNs(namespaceURI = "http://www.test.com", prefix = "")}) 
package com.test; 

所以,前綴爲「」,但生成的XML的時候,我有一個通用的前綴。 如果我使用另一個前綴值(不同於空字符串),則使用正確的前綴生成XML。

回答

0

您的JAXB (JSR-222)實施不保證它將使用@XmlSchema註釋中指定的前綴。 EclipseLink JAXB (MOXy)將會和最近的版本JAXB RI一樣。

JAXB RI提供了一個NamespacePrefixMapper擴展,MOXy現在支持該擴展,以更好地控制所使用的前綴。

更多信息

+0

我讀過有關這之前選擇自動前綴(NS1,NS2,...),但我希望它只能綁定來解決。 – ovi2ut

+0

@ ovi2ut - 正如我所說的EclipseLink MOXy和JAXB RI的最新版本將使用'@ XmlSchema'註釋中指定的前綴。 –

1

有了最新的JAXB,您必須設置資格的XmlSchema註釋將elementFormDefault領域。就像這樣:

@XmlSchema (
    elementFormDefault= XmlNsForm.QUALIFIED, 
    ...) 

否則,JAXB將增加