gpt4 book ai didi

jaxb - 通过绑定(bind)文件指定@XmlJavaTypeAdapter 类?

转载 作者:行者123 更新时间:2023-12-04 10:20:46 25 4
gpt4 key购买 nike

我有一个 3rd 方接口(interface),它提供与其 API 匹配的 xsd 文件。他们的一些映射并不完全是 Java,通常的 bool 值是 0 和 1 :-(

我想使用绑定(bind)文件为我的 BooleanAdapter 指定 @XmlJavaTypeAdapter 类,但到目前为止还没有任何乐趣。

绑定(bind)文件:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns="http://java.sun.com/xml/ns/jaxws"
jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.0">
<jaxb:bindings schemaLocation="GetUserDetailsResponse.xsd" node="/xs:schema" >
<jaxb:globalBindings underscoreBinding="asWordSeparator" >
<jaxb:serializable uid="1" />
<jaxb:javaType name="java.lang.Boolean" xmlType="xs:boolean"
printMethod="mumble.bindings.BooleanAdapter.marshall"
parseMethod="mumble.bindings.BooleanAdapter.unmarshall" />
</jaxb:globalBindings>
</jaxb:bindings>
</jaxb:bindings>

而且由于我使用的是 POM 中的 maven 相关位:

<strict>false</strict>
<extension>true</extension>
<verbose>true</verbose>
<enableWrapperStyle>false</enableWrapperStyle>
<enableAsyncMapping>false</enableAsyncMapping>

我已经切换 enableWrapperStyle 并且没有变化

我最终得到的是错误类型的生成适配器:

import javax.xml.bind.annotation.adapters.XmlAdapter;
public class Adapter1
extends XmlAdapter<String, Boolean>{
public Boolean unmarshal(String value) {
return (mumble.bindings.BooleanAdapter.unmarshall(value));
}

public String marshal(Boolean value) {
return (mumble.bindings.BooleanAdapter.marshall(value));
}
}

是否有一些绑定(bind)文件魔术可以用来摆脱生成的包装器并直接使用 BooleanAdapter?

最佳答案

您需要使用 <xjc:javaType>在您的绑定(bind)配置中,而不是 <jaxb:javaType> .
例如:

<xjc:javaType name="java.lang.Boolean" xmlType="xs:boolean"
adapter="mumble.bindings.BooleanAdapter"/>

我知道我正在回答一个老问题,但我没有足够的声誉来写评论。

关于jaxb - 通过绑定(bind)文件指定@XmlJavaTypeAdapter 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837451/

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