1

在向另一个进程发送消息时,我使用 XStream 1.4.3 在 Java 和 XML 文档之间移动。大多数一切都有效。但是,我似乎无法获得一份回复文档来正确反序列化。这是回复:

<AddToBatchResponse>
    <MerchantOrderNumber>1525675</MerchantOrderNumber>
    <MerchantOrderNumber>1525676</MerchantOrderNumber>
    <ResponseReasonCode>100</ResponseReasonCode>
    <AuthResponseType>S</AuthResponseType>
</AddToBatchResponse>

当 XStream 到达第 2 个 MerchantOrderNumber 时,它会给出错误消息“重复字段 MerchantOrderNumber”。我尝试了不同的设计,但它就是行不通。这是相关的Java代码:

来自调用类的片段

xstream.alias("AddToBatchResponse", AddToBatchResponse.class);
xstream.alias("MerchantOrderNumber", OrderNumber.class);
xstream.addImplicitCollection(AddToBatchResponse.class, "orderNumbers");
response = (AddToBatchResponse)xstream.fromXML(responseXml);

AddToBatchResponse.java(省略 getter 和 setter)

public class AddToBatchResponse {
protected List<OrderNumber> orderNumbers;
protected String ResponseReasonCode; 
protected String AuthResponseType;  
    ...

订单号.java

public class OrderNumber {
protected String MerchantOrderNumber;
...

有人可以告诉我我做错了什么吗?谢谢。

4

1 回答 1

0

好吧,没有答案 - 所以这就是我所做的:

我使用正则表达式 + 字符串操作来提取和处理代码中的额外元素。不优雅,不可取,但它有效。如果有人找到这个问题的答案,请分享。

于 2012-09-10T12:36:34.803 回答