首页 > 解决方案 > 如何将 XML 反序列化为不同的数据

问题描述

我有以下 XML:

<?xml version="1.0" encoding="UTF-8"?>
<document>
    <data id="amort">
        <rows>
            <row issuevalue="3000" amortdate="2039-03-16"
                 facevalue="1000" data_source="maturity"/>
        </rows>
    </data>
    <data id="coupons">
        <rows>
            <row isin="0A100EF5" name="26230" coupondate="2019-10-09"
                 valueprc="7.7"/>
        </rows>
    </data>
    <data id="amort.cursor">
        <rows>
            <row INDEX="0" TOTAL="1" PAGESIZE="20"/>
        </rows>
    </data>
    <data id="coupons.cursor">
        <rows>
            <row INDEX="0" TOTAL="4" PAGESIZE="20"/>
        </rows>
    </data>
</document>

我需要转为课堂。我尝试为“数据”定义但错误 com.fasterxml.jackson.databind.exc.InvalidDefinitionException:属性“数据”的定义无效

@JsonIgnoreProperties(ignoreUnknown = true)
@JacksonXmlRootElement(localName = "document")
data class CouponXml(

    @JacksonXmlElementWrapper(localName = "data")
    val amorts: DataAmort?,

    @JacksonXmlElementWrapper(localName = "data")
    val coupons :DataCoupon?
)

@JacksonXmlRootElement(localName = "data")
data class DataAmort(
    @JacksonXmlProperty(isAttribute = true)
    val name: String = "amort",

    @JacksonXmlElementWrapper(localName = "rows")
    val rows: List<AmortRow>? = null
)

@JacksonXmlRootElement(localName = "data")
data class DataCoupon(
    @JacksonXmlProperty(isAttribute = true)
    val name: String = "coupons",

    @JacksonXmlElementWrapper(localName = "rows")
    val rows: List<CouponRow>? = null
)

我如何需要注释我的对象才能让 FasterXML 反序列化这个 xml?

标签: javaxmlkotlinjacksonfasterxml

解决方案


推荐阅读