我正在开发一个 Android 项目,该项目使用 API 来获取它的数据。现在首先,我不能对 API 进行任何更改,因为它也用于已经发布的 iPhone 应用程序中。所以我必须解决这个问题。
我正在尝试使用 XStream 从 API 读取 XML。一切进展顺利,XStream 运行良好且轻松。直到我偶然发现一个带有模棱两可标签的 API 调用。API 返回的 XML 如下:
<response>
<plant>
<Name />
<Description />
<KeyValues>
<entry>
<Key />
<Value />
</entry>
<entry>
<Key />
<Value />
</entry>
<entry>
<Key />
<Value />
</entry>
</KeyValues>
<Tasks>
<entry>
<Title />
<Text />
</entry>
<entry>
<Title />
<Text />
</entry>
</Tasks>
</plant>
</response>
如您所见,标签 KeyValues 都包含标签 Tasks 包含条目标签。我遇到的问题是我无法将条目标记专门别名为我拥有的 java 类。我的植物类如下所示:
public class Plant extends BaseModel {
private String Name;
private String Description;
private List<KeyValue> KeyValues;
private List<Task> Tasks;
}
其中 KeyValue 和 Task 类本质上是两个入口类。但是当我尝试反序列化 xml 时,出现以下错误:
com.thoughtworks.xstream.converters.ConversionException: Cannot construct java.util.Map$Entry as it does not have a no-args constructor : Cannot construct java.util.Map$Entry as it does not have a no-args constructor
---- Debugging information ----
message : Cannot construct java.util.Map$Entry as it does not have a no-args constructor
cause-exception : com.thoughtworks.xstream.converters.reflection.ObjectAccessException
cause-message : Cannot construct java.util.Map$Entry as it does not have a no-args constructor
class : java.util.Map$Entry
required-type : java.util.Map$Entry
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
ath : /response/plant/KeyValues/entry
line number : 1
class[1] : java.util.ArrayList
converter-type[1] : com.thoughtworks.xstream.converters.collections.CollectionConverter
class[2] : com.example.android.stadseboeren.model.Plant
version : 0.0
-------------------------------
我知道在 xml 中使用模棱两可的标签并不是一个理想的情况,但我现在无法改变它。
有没有人可以帮我解决这个问题?
干杯大安