Ошибка retrofit simplexml при парсинге ответа

Делают POST запрос с помощью Retrofit 2, для парсинга использую SimpleXML. Все ответы от сервера на любые запросы приходят примерно в одном формате (всегда присутствует table). Ниже пример ответа:

<?xml version='1.0' encoding='UTF-8'?>
    <response>
        <status>2</status>
        <result_text>Операция успешно завершена. </result_text>
        <result>0</result>
        <date>20200304133459</date>
        <table col="4" name="ways_receiving_funds" row="2">
            <colnames>
                <code display="show" type="int">Код</code>
                <active display="show" type="int">Активна</active>
                <name display="show" type="str">Название</name>
                <type display="show" type="int">Тип способа получения</type>
            </colnames>
            <excluded_colnames />
            <colvalues>
                <code>2</code>
                <active>1</active>
                <name>Внутренний перевод</name>
                <type>7</type>
            </colvalues>
            <colvalues>
                <code>3</code>
                <active>1</active>
                <name>Наличные</name>
                <type>3</type>
            </colvalues>
        </table>
        <table col="3" name="ways_receiving_funds_fields" row="1">
            <colnames>
                <way_receiving display="show" type="int">Способ получения</way_receiving>
                <code display="show" type="int">Код</code>
                <value display="show" type="str">Значение</value>
            </colnames>
            <excluded_colnames />
            <colvalues>
                <way_receiving>3</way_receiving>
                <code>8</code>
                <value>Лично в руки</value>
            </colvalues>
        </table>
        <transact>0</transact>
        <status_text>Команда выполнена</status_text>
        <ext_transact>1575386150350</ext_transact>
        <advanced />
    </response>

Код класса Table:

@Root(name = "table", strict = false)
data class Table (
    @field:Attribute(name = "col", required = false)
    var col: String? = null,

//    Не парсится, так как уже есть атрибут name
    @field:Attribute(name="name", required = false)
    var name: String? = null,

    @field:Element(name = "colnames", required = false)
    var colnames: String? = null,

    @field:Attribute(name = "row", required = false)
    var row: String? = null,

    @field:ElementList(name="colvalues", inline=true, required = false)
    var colvalues: MutableList<Colvalues>? = null
)

При получении ответа возникает ошибка: java.lang.RuntimeException: org.simpleframework.xml.core.PersistenceException: Element 'name' is already used with @org.simpleframework.xml.Attribute(empty=, name=name, required=false) on field 'name' private java.lang.String com.paypoint.smartmoney.model.Table.name at line -1

Если закомментировать поле name в классе Table, то ошибка не возникает. Но очень нужно получать значение и этого атрибута тоже. Подскажите, пожалуйста, как обойти эту ошибку.


Ответы (1 шт):

Автор решения: kruzyabra

Не знаю, насколько корректное решение, но сработало вот так:

@Root(name = "table", strict = false)
data class Table (
    @field:Attribute(name="name", required = false)
    var name: String? = null,

    @field:ElementList(entry="colvalues", inline=true, required = false)
    var colvalues: MutableList<Colvalues>? = null
)
→ Ссылка