我有一个第三方接口,提供与其API匹配的xsd文件.他们的一些映射不是Java,通常的布尔值为0&1 :-(
我想使用绑定文件为我的BooleanAdapter指定@XmlJavaTypeAdapter类,但到目前为止还没有任何乐趣.
绑定文件:
<?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>
Run Code Online (Sandbox Code Playgroud)
因为我正在使用maven来自POM的相关位:
<strict>false</strict>
<extension>true</extension>
<verbose>true</verbose>
<enableWrapperStyle>false</enableWrapperStyle>
<enableAsyncMapping>false</enableAsyncMapping>
Run Code Online (Sandbox Code Playgroud)
我切换了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));
}
}
Run Code Online (Sandbox Code Playgroud)
是否有一些绑定文件魔法我可以用来摆脱生成的包装器并直接使用BooleanAdapter?
小智 10
您需要<xjc:javaType>在绑定配置中使用而不是<jaxb:javaType>.例如:
<xjc:javaType name="java.lang.Boolean" xmlType="xs:boolean"
adapter="mumble.bindings.BooleanAdapter"/>
Run Code Online (Sandbox Code Playgroud)
我知道我正在回答一个老问题,但我没有足够的声誉来撰写评论.
| 归档时间: |
|
| 查看次数: |
16546 次 |
| 最近记录: |