我有一个Web服务来导出图像文件。该Web服务的实体是在XSD模式中定义的,并使用xjc生成用于服务响应的java类。
在XSD中,将图像定义为complexType,用于扩展base64Binary简单类型。
<xsd:complexType name="image">
<xsd:simpleContent>
<xsd:extension base="xsd:base64Binary">
<xsd:attribute name="nil" type="xsd:boolean" use="optional"/>
<xsd:attribute name="overwrite" type="xsd:boolean"
use="optional"/>
<xsd:attribute name="origin" type="xsd:string" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
使用xjc生成Java类,然后得到以下信息:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "image", propOrder = {
"value"
})
public class Image {
@XmlValue
protected byte[] value;
@XmlAttribute(name = "nil")
protected Boolean nil;
@XmlAttribute(name = "overwrite")
protected Boolean overwrite;
@XmlAttribute(name = "origin")
protected String origin;
value属性具有注释@XMlValue而不是@XmlSchemaType(name =“ base64Binary”)。
当使用SoapUI测试Web服务时,我没有获得带有图像的base64字符串,而是获得了字节数组图像的toString()结果。
[B @ 11a0f47b
但是,如果我通过@XmlSchemaType(name =“ base64Binary”)手动更改@XmlValue批注,则结果是正确的。
<ns1:value>LzlqLzRBQVFTa1pKUmdBQkFnQUFBUU....</ns1:value>
答案 0 :(得分:0)
尝试删除
<xsd:simpleContent>
类型定义中的。
如果不起作用,请替换为<xsd:complexContent>