gpt4 book ai didi

java - JAXB 绑定(bind)文件 : XmlAdapters and package name

转载 作者:太空狗 更新时间:2023-10-29 22:49:55 26 4
gpt4 key购买 nike

我有这样一个绑定(bind)文件

<jxb:bindings version="2.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jxb:bindings schemaLocation="example.xsd" node="/xs:schema">
<jxb:schemaBindings>
<jxb:package name="example" />
</jxb:schemaBindings>
<jxb:globalBindings>
<jxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
<jxb:javaType name="java.util.Calendar" xmlType="xs:date"
parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
printMethod="javax.xml.bind.DatatypeConverter.printDate" />
<jxb:javaType name="java.util.Calendar" xmlType="xs:time"
parseMethod="javax.xml.bind.DatatypeConverter.parseTime"
printMethod="javax.xml.bind.DatatypeConverter.printTime" />
</jxb:globalBindings>

</jxb:bindings>
</jxb:bindings>

模式类在“example”中生成(正确),但 XmlAdapters 在“org.w3._2001.xmlschema”中生成(错误)。我该如何解决这个问题?

最佳答案

对于 Apache CXF 用户,最干净的方法是使用 -p wsdl2java 提供的选项.

-p [wsdl-namespace=]PackageName

Specifies zero, or more, package names to use for the generated code. Optionally specifies the WSDL namespace to package name mapping.

在我们的例子中

-p http://www.w3.org/2001/XMLSchema=org.acme.foo

如果您使用 cxf-codegen-plugin,则只需添加另一对 <extraarg> .

<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
[...]
<extraarg>-p</extraarg>
<extraarg>http://www.w3.org/2001/XMLSchema=org.acme.foo</extraarg>
[...]
</plugin>

不需要指向保留的 XSD 命名空间的 targetNamespace,也不需要包罗万象的 jaxb 包绑定(bind)。

关于java - JAXB 绑定(bind)文件 : XmlAdapters and package name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339615/

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