我有一个这样的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种类型的元素 DAY
和 WEEK
. 我无法通过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,
)
Special有两个不同的标签 DAY
和 Week
所以你可以把它们分成两个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?
)