gpt4 book ai didi

spring - xjc 绑定(bind)编译器配置将 xmlns 元素添加到 package-info 类?

转载 作者:行者123 更新时间:2023-12-04 02:04:11 24 4
gpt4 key购买 nike

我正在使用 Gradle 在我的项目中生成 jaxb 类。一切正常,但在编码 jaxb 对象时,我们在输出 xml 中随机看到不同的命名空间前缀,如 ns1、ns2 ..。但我们不希望这样,而是想为每个命名空间指定特定的命名空间前缀。我在这里查看并找到了链接 15772478说我们必须有带有 xmlns 元素的 package-info 类,我怎么能告诉 xjc 绑定(bind)编译器添加带有 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 绑定(bind)生成的示例 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 来指定前缀。

最佳答案

您需要更新您的绑定(bind)文件,如下所示。它将使用 eCH-0007 作为前缀。

<?xml version="1.0"?>
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd
http://jaxb2-commons.dev.java.net/namespace-prefix http://java.net/projects/jaxb2-commons/sources/svn/content/namespace-prefix/trunk/src/main/resources/prefix-namespace-schema.xsd">

<jxb:bindings schemaLocation="eCH-0007-3-0.xsd">
<jxb:schemaBindings>
<jxb:package name="ch.ech.ech0007.v3" />
</jxb:schemaBindings>
<jxb:bindings>
<namespace:prefix name="eCH-0007" />
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>

您可以在此链接上查看完整示例 Namespace-prefix .

关于spring - xjc 绑定(bind)编译器配置将 xmlns 元素添加到 package-info 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27565031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com