Java Castor Unmarshal字节数组

时间:2015-06-10 14:48:00

标签: java castor

美好的一天社区,

我有一个关于java中的castor unmarshaling的问题。如上所述,我使用castor来解组包含字节数组(byte [])的webservice响应 ..请参考以下内容:

public class ViewReportResponse {

private String reportId;
private byte[] report;

//getters and setters here ...

之前我曾使用过castor来进行unmarhsal webservice响应,但不可否认,之前的响应始终是字符串。这个问题因为我认为castor chokes解组它而返回了字节数组。

我的脚本映射文件如下:

<class name="com.domain.reporting.client.service.ViewReportResponse">

    <map-to xml="viewReportResponse" 
            xsi:schemaLocation="http://domain.com/schemas/reportingService/generateReport" 
            ns-uri="http://domain.com/schemas/reportingService/generateReport"
            ns-prefix="ns2" />

    <field name="reportId">
        <bind-xml name="reportId" 
                  node="element" 
                  type="string"/>
    </field>

    <field name="report">
        <bind-xml name="report" 
                  node="element" 
                  type="bytes" />
    </field>

我不确定我错过了什么,但收到了消息,但在解编时失败了。

我附上了以下错误的剪辑。

org.springframework.oxm.UnmarshallingFailureException: Castor unmarshalling exception; nested exception is org.exolab.castor.xml.MarshalException: unable to find FieldDescriptor for 'report' in ClassDescriptor of viewReportResponse.

请非常感谢任何帮助。 谢谢你

1 个答案:

答案 0 :(得分:0)

解决:

一般问题不是来自字节[]的maping。该问题与在这种情况下使用命名空间有关。

<field name="reportId"> 
<bind-xml name="ns:reportId" xmlns:ns="http://domain.com/schemas/reportingService/generateReport"
    node="element"
    type="string"/> 

<field name="report"> 
<bind-xml name="ns:report" xmlns:ns="http://domain.com/schemas/reportingService/generateReport"
    node="element"
    type="bytes"/> 

此帖已有效解决并关闭。