相关疑难解决方法(0)

使用Retrofit反序列化带有文本和子标签的XML标记

我正在使用Retrofit和SimpleXML来解析来自某些公共API的XML响应.我一直在很好地处理所有内容,直到我偶然发现包含自由文本和子标记的XML标记 - 如以下示例所示:

<a>
   Some free-style text
   <b>Even more text!</b>
</a>
Run Code Online (Sandbox Code Playgroud)

为了尝试使用Simple-XML注释进行反序列化,我已经采用了两种方式.请记住,基本上'a'是一个条目标签列表:

首先:

@ElementList(entry = "a", inline = true, required = false) List<A> aList;
Run Code Online (Sandbox Code Playgroud)

'A'定义如下:

public static class A {
    @Text(required = false) protected String a;
}
Run Code Online (Sandbox Code Playgroud)

这很好地读取了自由文本部分,但是任何反序列化'b'标记内容的尝试(例如通过将@Elementw或o @Path注释成员添加到类'A')都失败了.我查看了SimpleXML文档,显然使用时存在以下限制@Text:

管理Text注释使用的规则是每个模式类只能有一个.此外,此注释不能与Element注释一起使用.只有属性注释可以与它一起使用,因为此注释不会在拥有元素中添加任何内容.

第二种方法,更简单:

@ElementList(entry = "a", inline = true, required = false) List<String> aList;
Run Code Online (Sandbox Code Playgroud)

再一次,"a"标签的内容得到了正确的反序列化,但是没有办法找到"b"子标签的内容.

如何使用与JAVA对象相关的纯Simple-XML注释,使用关联的'b'子标签对'a'标签的内容进行反序列化?

java xml android simple-framework retrofit

3
推荐指数
1
解决办法
1215
查看次数

标签 统计

android ×1

java ×1

retrofit ×1

simple-framework ×1

xml ×1