我正在使用名为 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/