SimpleXML: десериализация списка элементов - PullRequest
0 голосов
/ 01 марта 2019

У меня есть этот XML для десериализации с использованием simpleXML

<Content>
    <Items count="2">
        <Device>
            <User>
                <Lastname>Straw</Lastname>
                <Firstname>Jim</Firstname>
            </User>
        </Device>
        <Device>
            <User>
                <Lastname>Straw</Lastname>
                <Firstname>John</Firstname>
            </User>
        </Device>
    </Items>
</Content>

Я сделал этот POJO в Kotlin, но он не соответствует XML

@Root
data class Content(@field:ElementList(entry="Device") var device: List<Device>)

@Root
data class Device(@field:Element(name="User") var user: User? = null, 
    @field:Element(name="InvDevice") var invDevice: InvDevice? = null)

@Root
data class User(@field:Element(name="Lastname") var lastname: String? = null,
    @field:Element(name="Firstname") var firstname: String? = null)

У меня есть ElementException: Element 'Предметы 'не совпадают в классе

1 Ответ

0 голосов
/ 01 марта 2019

Используя плагин POJO Generator в Android Studio, как рекомендовано здесь , я узнал, как сделать мои классы данных

@Root
data class Content(@field:Element(name = "Items", required = false) var items: Items? = null)

data class Items(
    @field:ElementList(name = "Device", required = false, entry = "Device", inline = true)
    var deviceList: List<Device>? = null,
    @field:Attribute(name="count", required = false)
    var count: Int? = null
)

data class Device(@field:Element(name="User", required = false) var user: User? = null)

data class User(@field:Element(name="Lastname", required = false) var lastname: String? = null,
                @field:Element(name="Firstname", required = false) var firstname: String? = null)
...