我正在使用Gradle在我的項目中生成jaxb類。每一件事情都很好,但在編組jaxb對象時,我們在輸出xml中隨機地看到不同的名稱空間前綴,如ns1,ns2 ..但是我們不想要這個,並且想要爲每個名稱空間指定特定的名稱空間前綴。我在這裏檢查並發現鏈接15772478說我們必須有包含xmlns元素的包信息類,我怎麼能說xjc綁定編譯器添加與prifixes和namespaceURI xmlns元素?下面是Gradle配置,我必須從模式生成Jaxb類。xjc綁定編譯器配置將xmlns元素添加到package-info類?
ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath:configurations.jaxb.asPath)
ant.jaxbTargetDir = jaxbTargetDir
ant.xjc(destdir: '${jaxbTargetDir}', binding: 'xjc-bindings/bindings.jaxb', extension: true) {
//arg(value: '-npa')
arg(value: '-readOnly')
arg(value: file('src/main/webapp/schemas/primary1.xsd'))
arg(value: file('src/main/webapp/schemas/primary2.xsd'))
arg(value: file('xjc-bindings/xjc-a.xsd'))
arg(value: file('xjc-bindings/xjc-b.xsd'))
}
由xjc綁定生成的示例package-info.java。
@XmlSchema(namespace = "urn:neustar:names:decedm:1.0")
package biz.neustar.dece.xml.jaxb.decedm;
import javax.xml.bind.annotation.XmlSchema;
我期待像下面的包信息類。
@XmlSchema(namespace = "<someuri>",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
xmlns={
@XmlNs(prefix="someprefix" , namespaceURI = "<some uri>")
})
package biz.neustar.dece.xml.jaxb.core;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlSchema;
有人可以請我建議什麼是配置需要實現這個? 我不想使用NamespacePrefixMapper來指定前綴。
參見:http://stackoverflow.com/questions/25184035/adding-annotations-to-package-info-generated-by-jaxb – lexicore 2015-01-06 12:26:37