gpt4 book ai didi

JaxB 生成的 XML 也有其他模式的命名空间

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

我有两个 XSD。

XSD1 有命名空间 abc.com XSD2 有命名空间 xyz.comXSD1 还有一个绑定(bind)文件 binding.xjb,类似于下面 -

<?xml version="1.0"?>
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jxb:bindings schemaLocation="XSD1.xsd" node="/xs:schema">
<jxb:globalBindings>
<xjc:simple />
</jxb:globalBindings>
</jxb:bindings>
</jxb:bindings>

我在另一个服务中的 Gradle 文件将 XSD 契约(Contract)项目导入为 -
task extractPackagedXml(type: Copy) {
from configurations.packagedXml.collect {
zipTree(it)
}
into "${buildDir}/xsd"
}

task jaxb(dependsOn: 'extractPackagedXml') << {
jaxbTargetDir.mkdirs()
ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.jaxb.asPath)

ant.xjc(extension: 'true', destdir: jaxbTargetDir, package: 'com.test.contract', binding: "${buildDir}/xsd/binding.xjb") {
schema(dir: "$buildDir/xsd", includes: "**/*.xsd")
}
}

现在,当我确实使用 jaxb 将 XSD2 类转换为 XML 时,生成的 xml 不仅有 xsd2 的命名空间,而且还有 xsd1 的命名空间。

我在这里错过了什么吗?

最佳答案

没有。这与 xjc 无关。我不确定 ant 和 gradle ......我不和他们一起工作。 Xjc 做得很好——从 XSD 生成 Java 类。当此类类的对象由 JAXB 编码器编码为 XML 时,交易是关于运行时的。 Marshaller 由 JAXBContext 创建,其中定义了这些类/包。该 JAXBContext 的所有给定 namespace 都在生成的 XML 中。这真的没什么大不了的,但只是烦人且不需要的 namespace 使 XML 变得更大。

关于JaxB 生成的 XML 也有其他模式的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47624642/

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