gpt4 book ai didi

android - Xstream 模棱两可的 xml 标签

转载 作者:行者123 更新时间:2023-11-29 21:45:31 25 4
gpt4 key购买 nike

我正在开发一个 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 中使用不明确的标签不是理想的情况,但现在我无能为力。

有没有人可以帮我解决这个问题?

干杯大安

最佳答案

好的,为了成为一个好公民,我会在这里发布答案,因为我想通了。

最终我最终创建了一个额外的类,它本质上只是条目列表的持有者。

public class KeyValues extends BaseModel {

@XStreamImplicit(itemFieldName="entry")
private ArrayList<KeyValueEntry> entries;
}

使用 XStreamImplicit 我可以将条目对象绑定(bind)到我的数组列表。

这不是最漂亮的解决方案,但它确实有效。

关于android - Xstream 模棱两可的 xml 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15945979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com