Jaxb2Marshaller:使用 0/1 来编组 xsd:boolean 值与生成的 java 模型

问题描述 投票:0回答:1

我正在使用 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?

java xsd jaxb jaxb2 xjc
1个回答
0
投票

这个问题你有解决办法吗?

© www.soinside.com 2019 - 2024. All rights reserved.