使用XStream重复元素反序列化

时间:2012-09-04 15:51:54

标签: java xml deserialization xstream

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

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

当XStream到达第二个MerchantOrderNumber时,它会出现错误“Duplicate field 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;  
    ...

OrderNumber.java

public class OrderNumber {
protected String MerchantOrderNumber;
...

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

1 个答案:

答案 0 :(得分:0)

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

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