美好的一天社区,
我有一个关于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.
请非常感谢任何帮助。 谢谢你
答案 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"/>
此帖已有效解决并关闭。