JAXB编组:编组base64binary内容时跳过base64编码

时间:2018-06-20 14:17:29

标签: jaxb base64 marshalling

我遇到了以下问题:我们有以下XSD元素:

<xsd:element name="Content">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="Data" type="base64Binary"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

我们从XSD生成了jaxb类,产生了以下类

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "Data" })
@XmlRootElement(name = "Content")
public class Content { 
    @XmlElement(name = "Data", required = true)
    protected byte[] data;

    public byte[] getData() {
         return data;
    }

    public void setData(byte[] value) {
        this.data = value;
    }
}

每当我们通过setData方法写入Content / Data元素时,jaxb都会将数据自动编码为base64。

但是现在我们有了已经以base64编码的数据。如果我们将其写入Content / Data元素,它将第二次获得base 64编码,因此生成的XML包含Content / Data元素内的数据,该数据被base64编码两次。

编组时,是否有任何方法可以跳过jaxb对base64Binary类型进行的自动base64编码?

0 个答案:

没有答案