Не получается распарсить 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 должны быть как названия.

→ Ссылка