我正在使用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;
...
有人可以告诉我我做错了什么吗?感谢。
答案 0 :(得分:0)
好吧,没有答案 - 所以这就是我所做的:
我使用正则表达式+字符串操作来提取和处理代码中的额外元素。不优雅不可取,但它的工作原理。如果有人找到这个问题的答案,请分享。