通过jackson解析包含多个元素的xml文件。

问题描述 投票:0回答:1

我有一个这样的xml文件。

<TABLES>
<TABLE NAME="abcd" TIME="2013.05.27 00:00:00" >
<LINES>
<LINE TIME="2013.05.27 00:00:00" BEGINE="787465" END="787465"/>
</LINES>
<SPECIAL>
<DAY MASK="128" DATE="16714778" />
<WEEK NAME="abcde" PARAM="128" />
</SPECIAL> 
</TABLE>
</TABLES>

问题是,在这个文件中 SPECIAL 标签有2种类型的元素 DAYWEEK. 我无法通过jackson来解析,有没有什么特殊的方法来处理?我可以通过POJO解析其余的内容,没有任何问题,但是对于特殊的内容,我需要设置两个不同的类

// DAY
class SPECIAL(
    @JacksonXmlProperty(localName = "MASK")
    val mask: String,

    @JacksonXmlProperty(localName = "DATE")
    val date: Int,
)

// WEEK
class SPECIAL(
    @JacksonXmlProperty(localName = "NAME")
    val name: String,

    @JacksonXmlProperty(localName = "PARAM")
    val param: Int,
)
android xml jackson xml-parsing jackson-dataformat-xml
1个回答
1
投票

Special有两个不同的标签 DAYWeek 所以你可以把它们分成两个POJO类,如

data class DAY(@JacksonXmlProperty(localName = "Date") val date: String, @JacksonXmlProperty(localName = "MASK")val mask: String)

data class WEEK(@JacksonXmlProperty(localName = "PARAM") val param: String,@JacksonXmlProperty(localName = "Name") val name: String)

并在SPECIAL类中使用为。

data class SPECIAL(@JacksonXmlProperty(localName = "WEEK") val week: WEEK, @JacksonXmlProperty(localName = "DAY") val day: DAY)


为了使 SPECIAL 字段是可选的,在您的 TABLE 类使用 ? 作为。

data class TABLE(
    @JacksonXmlProperty(localName = "SPECIAL") val special: SPECIAL?,
    @JacksonXmlProperty(localName = "NAME") val name: String,
    @JacksonXmlProperty(localName = "TIME") val time: String
)

SPECIAL 类为

data class SPECIAL(
    @JacksonXmlProperty(localName = "WEEK") var week: WEEK?,
    @JacksonXmlProperty(localName = "DAY") var day: DAY?
)

查看完整的源代码

© www.soinside.com 2019 - 2024. All rights reserved.