java - 使用 XStream 解析嵌套标签

标签 java xml xstream

我正在使用名为 Socrata 的数据库 API 来解析回收服务的信息。可以在此处找到此服务的 XML 输出示例:

http://www.datakc.org/api/views/zqwi-c5q3/rows.xml?search=%22computer%22

正如您可能知道的那样,这看起来就像糟糕的 XML。我遇到的问题是包含行列表的标签称为 row (没有属性),每行也称为 row (有属性)。这似乎会让 XStream 感到困惑,而且我根本找不到用 XStream 处理这些数据的方法。

你们中的 XStream/XML 专家知道我能做什么吗?

最佳答案

解决方案不是很直观,但我设法弄清楚了。首先,我必须声明一个代表响应标签的类。此类还包含回收服务列表的容器。该类的外观如下:

@XStreamAlias("response")
public class QueryResponse {

    @XStreamAlias("row")
    private RecycleServices services;

    public RecycleServices getServices() {
        return services;
    }

    public void setServices(RecycleServices services) {
        this.services = services;
    }

}

RecycleServices 类是这里的真正技巧,它包装了 RecycleService 类的隐式列表。

@XStreamAlias("row")
public class RecycleServices {

    @XStreamImplicit(itemFieldName = "row")
    private List<RecycleService> services = new ArrayList<RecycleService>();

    public List<RecycleService> getServices() {
        return services;
    }

    public void setServices(List<RecycleService> services) {
        this.services = services;
    }

}

RecycleService 类只是每个回收服务行的直接表示,与这个问题的答案并不真正相关。我在弄清楚这一点时感到有些沮丧,我希望这对那里的人有帮助。

关于java - 使用 XStream 解析嵌套标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11964902/

相关文章:

类似于 XSTREAM 的 C++ 序列化清理 XML

java - jdbc的registerOutParameter中的sqlType是什么意思?

java - 构建 Maven 时如何覆盖远程资源?

java - 比较两个不同的文本文件并替换相似的单词

java - Oracle Java 存储库无法编译

javascript - HTML5 跨域 XmlHttpRequest 与旧的 XmlHttpRequests

java - 使用 X-Stream 在 Android 中反序列化 XML

java - 将 SOAP 响应转换为 xstream 对象

ruby - XML解析元素和元素属性到数组中

xml - node-soap 客户端 (Node.js) 中数组字段的命名空间