gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:04:54 24 4
gpt4 key购买 nike

我正在尝试使用 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 类和 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;

}

关于Java - 使用 SimpleXML 获取 ElementList 属性 (Android/Retrofit),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30832091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com