我正在使用 Jaxb2Marshaller 来编组和解组肥皂请求和响应。
我的java模型类是使用xjc基于wsdl生成的。
我有一个奇怪的要求,即 xsd:boolean 类型的字段应在结果 xml 中编组为 1 或 0(默认情况下使用“true”或“false”值)。
我已经尝试创建一个 XmlAdapter,如下所示:
public class JaxbBooleanAdapter extends XmlAdapter<Integer, Boolean> {
@Override
public Boolean unmarshal(final Integer v)
{
return v == null ? null : v == 1;
}
@Override
public Integer marshal(final Boolean v)
{
return v == null ? null : v ? 1 : 0;
}
}
并设置我的 Jaxb2Marshaller 使用它:
marshaller.setAdapters( new JaxbBooleanAdapter() );
但是没有成功。
当我用
@XmlJavaTypeAdapter( JaxbBooleanAdapter.class )
注释java模型类时,它工作得很好,但是我的java模型是由xjc生成的,我无法让它使用绑定生成注释,我尝试了以下绑定:
<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<globalBindings>
<xjc:javaType xmlType="xsd:boolean" name="java.lang.Boolean"
adapter="br.com.neolog.label.integration.configuration.JaxbBooleanAdapter" />
</globalBindings>
</bindings>
我的问题是:对于使用 xjc 生成的 java 模型类,有什么方法可以强制 Jaxb2Marshaller 将布尔值编组为 0/1?
这个问题你有解决办法吗?