我使用 XStream 将 XML 映射到相应的 POJO。我的XML结构如下
<myTag>
<TagABC>
<x> ... </x>
<y> ... </y>
</TagABC>
.
.
.
<TagABC>
<x> ... </x>
<y> ... </y>
</TagABC>
</myTag>
所以有多个TagABC。我已在 POJO 中将 TagABC 定义为
private List<TagABCHolder> TagABC;
其中 TagABCHolder 是另一个 POJO,仅包含 x、y 及其 getter、setter
现在,当我尝试使用 XStream 和下面的代码进行映射时
xstream.alias("TagABC", TagABCHolder.class);
xstream.fromXML(xml);
这无法识别 POJO 中为 TagABC 定义的 List 结构,并引发以下错误
---- Debugging information ----
message : x: x
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : x: x
class : com.a.b.c.testing.common.TagABCHolder
required-type : java.util.ArrayList
path : /myTag/TagABC/x
line number : 1
知道如何解决这个问题吗?
最佳答案
我找到了解决方案。
这只是注释的一个技巧。
这就是我所做的:
我在POJO(TagABCHolder)中添加了@XStreamImplicit注释
@XStreamImplicit(itemFieldName="TagABC")
private List<TagABCHolder> TagABC;
并且刚刚处理了我映射的代码中放置在 POJO 中的注释
xstream.processAnnotations(TagABCHolder.class);
就是这样!!!
关于java - 使用 xstream 将 XML 映射到 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26043883/