java - 使用 xstream 将 XML 映射到 POJO

标签 java xml xstream

我使用 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/

相关文章:

java - 在java中存储10,000条记录的最佳数据结构

C# XML 数组反序列化

javascript - SAPUI5可重用表片段数据绑定(bind)

java - XStream 双下划线 - 在 Java Spring Batch Application Context 中处理

java - Jenkins 中的 Jetty/winstone 连接器配置

JAVA:将字符串调节为组合框项目,可能吗?

python - 领域特定语言,标准文件格式

android - android 中的 com.thoughtworks.xstream.mapper.CannotResolveClassException

java - 使用 XStream 和 JsonHierarchicalStreamDriver 输出值,如何舍入 double ?

java - 签名算法 : SHA256WithRSAEncryption 上的算法约束检查失败