【发布时间】:2012-09-04 15:51:53
【问题描述】:
在向另一个进程发送消息时,我正在使用 XStream 1.4.3 在 Java 和 XML 文档之间移动。大多数一切都有效。但是,我似乎无法获得一份回复文档来正确反序列化。回复如下:
<AddToBatchResponse>
<MerchantOrderNumber>1525675</MerchantOrderNumber>
<MerchantOrderNumber>1525676</MerchantOrderNumber>
<ResponseReasonCode>100</ResponseReasonCode>
<AuthResponseType>S</AuthResponseType>
</AddToBatchResponse>
当 XStream 到达第二个 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;
...
OrderNumber.java
public class OrderNumber {
protected String MerchantOrderNumber;
...
谁能告诉我我做错了什么?谢谢。
【问题讨论】:
-
应该提到 - 我想在不使用注释的情况下这样做。
-
您在 XStream 中使用什么解析器?使用默认的 XPP3,我无法重现您的错误。
-
StAX 解析器 - 你认为这是个问题吗?
-
我只能假设 StAX 解析器在处理 XML 时更加严格。您实际上是如何实例化您的 xstream 实例的?
-
xstream = new XStream(new StaxDriver());
标签: java xml deserialization xstream