【发布时间】:2015-02-18 07:54:26
【问题描述】:
我正在使用 Gradle 在我的项目中生成 jaxb 类。一切正常,但在编组 jaxb 对象时,我们在输出 xml 中随机看到不同的命名空间前缀,如 ns1、ns2 ..。但是我们不想要这个并且想要为每个命名空间指定特定的命名空间前缀。我在这里检查并找到链接15772478 说我们必须有带有 xmlns 元素的 package-info 类,我怎么能对 xjc 绑定编译器说添加带有 prifixes 和 namespaceURI 的 xmlns 元素?下面是我必须从模式生成 Jaxb 类的 gradle 配置。
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;
我期待下面的 package-info 类。
@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 来指定前缀。
【问题讨论】:
标签: spring web-services cxf xjc