Java - 使用 SimpleXML 获取 ElementList 属性 (Android/Retrofit)

Java - Getting a ElementList attribute with SimpleXML (Android/Retrofit)

我正在尝试使用 SimpleXML 解析看起来像这样的 XML 响应。它与简单 xml 教程页面

中显示的示例非常相似

http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#javabean

<response>
  <version>1.0</version>
  <code>1</code>
  <message>Report generated</message>
  <records total="365">
    <record rowId="1" data1="1234" data2="abc"  />
    <record rowId="2" data1="5678" data2="def"  />
    <record rowId="3" data1="9012" data2="ghi"  />
  </records>
</response>

我唯一的不同是,我的 <records total="365"> 标签有一个我需要收集的属性,这样我就可以确定是否有多页结果。

我试过使用他们的示例,结果是这样

  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;

    }
 }

除了在 Records 标记中缺少 Total 属性外,这可以正常工作。

尽管我尝试将此 Total 标记移出,但均无济于事。

我已经尝试了各种组合,包括创建一个包含属性的 Records class 和 ArrayList,将其作为基本属性放在主对象中,或者尝试使用 getter / setter 在主要响应对象中没有任何运气。

例如

 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;
    }
}

我不明白如何制作 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;

    }