Java-使用SimpleXML获取ElementList属性(Android/Reformation)
我试图用SimpleXML解析一个类似这样的XML响应。这与SimpleXML教程页面上显示的示例非常相似 唯一不同的是,我的Java-使用SimpleXML获取ElementList属性(Android/Reformation),java,android,simple-framework,Java,Android,Simple Framework,我试图用SimpleXML解析一个类似这样的XML响应。这与SimpleXML教程页面上显示的示例非常相似 唯一不同的是,我的标记有一个我需要收集的属性,这样我就可以确定是否有多页的结果 我试着用他们的例子,结果就是这样 public class Response { private ArrayList<Record> records; @Element public String message; @Element public
标记有一个我需要收集的属性,这样我就可以确定是否有多页的结果
我试着用他们的例子,结果就是这样
public class Response {
private ArrayList<Record> records;
@Element
public String message;
@Element
public String code;
@Element
public String version;
@ElementList
public void setRecords(ArrayList<Record> records) {
if(records.isEmpty()) {
throw new IllegalArgumentException("Empty collection");
}
this.records = records;
}
@ElementList
public ArrayList<Record> getRecords() {
return records;
}
public class Record {
@Attribute public String data1;
@Attribute public String data2;
}
}
公共类响应{
私人ArrayList记录;
@元素
公共字符串消息;
@元素
公共字符串代码;
@元素
公共字符串版本;
@元素列表
公共无效集合记录(ArrayList记录){
if(records.isEmpty()){
抛出新的IllegalArgumentException(“空集合”);
}
这个.记录=记录;
}
@元素列表
公共阵列列表getRecords(){
退货记录;
}
公开课记录{
@属性公共字符串data1;
@属性公共字符串data2;
}
}
除了在Records标记中缺少Total属性外,它还能正常工作
但是,无论我怎么做,都无法得到这个标签
我尝试过各种组合,比如创建一个记录类来保存属性和ArrayList,将其作为基本属性放在主对象中,或者在没有任何运气的情况下尝试在主响应对象中使用getter/setter
例如
公共类响应{
@元素
公共字符串消息;
@元素
公共字符串代码;
@元素
公共字符串版本;
@元素
公共记录;
公开课堂记录{
私人ArrayList记录;
@属性
公共字符串总数;
@元素列表
公共无效集合记录(ArrayList记录){
if(records.isEmpty()){
抛出新的IllegalArgumentException(“空集合”);
}
这个.记录=记录;
}
@元素列表
公共阵列列表getRecords(){
退货记录;
}
}
公开课记录{
@属性公共字符串data1;
@属性公共字符串data2;
}
}
我不知道如何创建List对象,并从中获取属性
任何帮助都将不胜感激,我不知道如何使其工作,它似乎应该如此简单,但我显然错过了一些东西。能够得到一些帮助,这就是有效的方法
@Default(DefaultType.FIELD)
public class Response{
public String message;
public String code;
public String version;
public Records records;
public Records getRecords ()
{
return records;
}
public void setRecords (ArrayList<Record> records)
{
this.records.setRecord(records);
}
}
public class Records
{
@Attribute
public String total;
public ArrayList<Record> records;
public String getTotal ()
{
return total;
}
public void setTotal (String total)
{
this.total = total;
}
@ElementList(inline=true)
public ArrayList<Record> getRecord ()
{
return records;
}
@ElementList(inline=true)
public void setRecord (ArrayList<Record> record)
{
this.records = record;
}
}
public class Record {
@Attribute public String data1;
@Attribute public String data2;
}
@Default(DefaultType.FIELD)
公众课堂反应{
公共字符串消息;
公共字符串代码;
公共字符串版本;
公共记录;
公共记录
{
退货记录;
}
公共无效集合记录(ArrayList记录)
{
this.records.setRecord(记录);
}
}
公开课堂记录
{
@属性
公共字符串总数;
公共阵列列表记录;
公共字符串getTotal()
{
返回总数;
}
公共void集合总计(字符串总计)
{
这个.总计=总计;
}
@ElementList(inline=true)
公共ArrayList getRecord()
{
退货记录;
}
@ElementList(inline=true)
公共无效集合记录(ArrayList记录)
{
this.records=记录;
}
}
公开课记录{
@属性公共字符串data1;
@属性公共字符串data2;
}
Oops,忘了这么做!它不会让我一发布就标记它。谢谢你的提醒
public class Response {
@Element
public String message;
@Element
public String code;
@Element
public String version;
@Element
public Records records;
public class Records{
private ArrayList<Record> records;
@Attribute
public String total;
@ElementList
public void setRecords(ArrayList<Record> records) {
if(records.isEmpty()) {
throw new IllegalArgumentException("Empty collection");
}
this.records = records;
}
@ElementList
public ArrayList<Record> getRecords() {
return records;
}
}
public class Record {
@Attribute public String data1;
@Attribute public String data2;
}
}
@Default(DefaultType.FIELD)
public class Response{
public String message;
public String code;
public String version;
public Records records;
public Records getRecords ()
{
return records;
}
public void setRecords (ArrayList<Record> records)
{
this.records.setRecord(records);
}
}
public class Records
{
@Attribute
public String total;
public ArrayList<Record> records;
public String getTotal ()
{
return total;
}
public void setTotal (String total)
{
this.total = total;
}
@ElementList(inline=true)
public ArrayList<Record> getRecord ()
{
return records;
}
@ElementList(inline=true)
public void setRecord (ArrayList<Record> record)
{
this.records = record;
}
}
public class Record {
@Attribute public String data1;
@Attribute public String data2;
}