2015-06-14 2 views
0

Я пытаюсь проанализировать XML-ответ, который выглядит так: SimpleXML. Это очень похоже на примере, показанном на обучающей странице простой XMLJava - Получение атрибута ElementList с помощью SimpleXML (Android/Retrofit)

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, который содержит атрибут и ArrayList вместо этого, имея его в основном объекте в качестве базового атрибута или пытающийся получить геттер/сеттер в основном объекте ответа без при удаче.

E.G.

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 и получить от него атрибут.

Любая помощь будет принята с благодарностью, я не уверен, как заставить ее работать, похоже, она должна быть такой простой, но я, очевидно, что-то пропустил.

ответ

1

был в состоянии получить некоторую помощь, и это то, что работает

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

    } 
+0

Ой, забыл сделать это! Это не позволило мне отметить его, как только я отправил. Спасибо за напоминание – Ben987654

Смежные вопросы