无法为特定XML文件创建POJO(解析xml)

时间:2017-03-29 06:55:43

标签: java android xml retrofit2

我正在使用SimpleXmlConverterFactory的Retrofit 2。我要做的是从这里解析falues XML link

如果某天链接过时,这是我试图解析的XML的简短示例。

<?xml version="1.0" encoding="windows-1251" ?>
<ValCurs Date="29.03.2017" name="Foreign Currency Market">
<Valute ID="R01010">
    <NumCode>036</NumCode>
    <CharCode>AUD</CharCode>
    <Nominal>1</Nominal>
    <Name>Russian name1</Name>
    <Value>43,3058</Value>
</Valute>
<Valute ID="R01020A">
    <NumCode>944</NumCode>
    <CharCode>AZN</CharCode>
    <Nominal>1</Nominal>
    <Name>Russian name2</Name>
    <Value>32,8637</Value>
</Valute>
<Valute ID="R01035">
    <NumCode>826</NumCode>
    <CharCode>GBP</CharCode>
    <Nominal>1</Nominal>
    <Name>Russian name3</Name>
    <Value>71,6658</Value>
</Valute>
</ValCurs>

以下是我要解析响应的类:

@Root(name = "Valute")
public class CbrValute {

    @Element(name = "Name", required = false)
    private String name;

    @Element(name = "Value", required = false)
    private String value;

    @Element(name = "ID", required = false)
    private String currencyId;

    @Element(name = "Nominal", required = false)
    private String nominal;

    @Element(name = "CharCode", required = false)
    private String charCode;

    @Element(name = "NumCode", required = false)
    private String numCode;
}

回应:

@Root(name = "ValCurs")
public class CbrResponse {

    @Attribute(name = "Date")
    private String date;

    @Attribute(name = "name")
    private String name;

    @ElementList(name = "Valute")
    private List<CbrValute> valuteList;
}

每次我运行应用程序时,我都会遇到不满足该值的崩溃:

Caused by: org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Element(data=false, name=ID, required=true, type=void) on field 'currencyId' private java.lang.String com.tryue.news18.repository.dto.CbrValute.currencyId for class com.tryue.news18.repository.dto.CbrValute at line 4

或者该值已在使用中(当我将所有字段设为不需要时):

Element 'Valute' is already used with @org.simpleframework.xml.ElementList

所以看起来我在开始时犯了一些错误,但我不知道如何追踪它。请帮忙!

0 个答案:

没有答案