【问题标题】:SimpleXML: deserializing a list of itemsSimpleXML:反序列化项目列表
【发布时间】:2019-03-01 10:02:36
【问题描述】:

我有这个 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>

我在 Kotlin 中制作了这个 POJO,但它与 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:元素“项目”在类中没有匹配项

【问题讨论】:

    标签: android xml kotlin simple-framework


    【解决方案1】:

    按照推荐的here使用Android Studio中的POJO Generator插件,我发现了如何制作我的数据类

    @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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2012-04-13
      • 2016-05-14
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多