Не получается распарсить XML
Никак не могу построить правильный POJO чтобы распарсить данную xml:
<cbt_currency_rate name="CBT Currency XML">
<date>28.01.2021</date>
<rate code="USD">
<name>ABŞ-NYŇ DOLLARY</name>
<rate_usd>1</rate_usd>
<multiplier>1</multiplier>
<rate_tmt>3.5</rate_tmt>
<checksum>16e12c6589422419f9379d03f91410b3</checksum>
</rate>
<rate code="AED">
<name>ARAP DIRHEMI</name>
<rate_usd>3.6728</rate_usd>
<multiplier>1</multiplier>
<rate_tmt>0.953</rate_tmt>
<checksum>51f2ea26a3b8863c07093bf1473028b3</checksum>
</rate>
<rate code="AUD">
<name>AWSTRALIÝA DOLLARY / ABŞ DOLL.</name>
<rate_usd>0.7726</rate_usd>
<multiplier>1</multiplier>
<rate_tmt>2.7041</rate_tmt>
<checksum>e657359d9881bbb69204dd2f0fc89bdc</checksum>
</rate>
</cbt_currency_rate>
написал два класса для этого:
@Root
public class MainResponse {
@Attribute(name = "name")
String name;
@Element(name = "date")
String date;
@ElementList(name = "rate" , entry = "Rate")
List<Rate> rate;
public MainResponse() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public List<Rate> getRates() {
return rate;
}
public void setRates(List<Rate> rates) {
this.rate = rates;
}
}
а так же:
@Root(name = "cbt_currency_rate ")
public class Rate {
@Attribute(name = "code", required = false)
String code;
@Element(name = "name", required = false)
String name;
@Element(name = "rate_usd", required = false)
float rate_usd;
@Element(name = "rate_tmt", required = false)
float rate_tmt;
@Element(name = "checksum", required = false)
String checksum;
public Rate() {
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getRate_usd() {
return rate_usd;
}
public void setRate_usd(float rate_usd) {
this.rate_usd = rate_usd;
}
public float getRate_tmt() {
return rate_tmt;
}
public void setRate_tmt(float rate_tmt) {
this.rate_tmt = rate_tmt;
}
public String getChecksum() {
return checksum;
}
public void setChecksum(String checksum) {
this.checksum = checksum;
}
}
получаю ошибку:
org.simpleframework.xml.core.PersistenceException: Element 'rate' is already used with @org.simpleframework.xml.ElementList(data=false, empty=true, entry=Rate, inline=false, name=rate, required=true, type=void) on field 'rate' java.util.List package.models.MainResponse.rate at line -1
использую ретрофит и Симпле xml
implementation 'com.squareup.retrofit2:converter-simplexml:2.3.0'
Ответы (1 шт):
Автор решения: Fariz Mamedow
→ Ссылка
Просто изменил getRates() на getRate(). getter/setter должны быть как названия.