如何为Kotlin数据类的字段添加XML属性(Jackson库)
解决Jackson-Kotlin生成带属性XML节点的问题
你当前的问题是因为把actionCode属性直接绑定在了根类ExampleClass的字段上,Jackson会默认将其作为根节点<ExampleClass>的属性。要让属性属于<field>节点,必须把<field>节点的属性和文本内容封装成独立的数据类,具体修改如下:
1. 创建表示<field>节点的数据类
新建一个类来承载<field>节点的属性和文本值,用@JacksonXmlText标记文本内容:
data class FieldItem( @JacksonXmlProperty(isAttribute = true, localName = "actionCode") val actionCode: String = "Add", @JacksonXmlText val value: String = "aa" )
2. 修改ExampleClass引用新的节点类
将原来的String类型field字段替换为FieldItem类型:
data class ExampleClass( @JacksonXmlProperty(localName = "field") val field: FieldItem = FieldItem() )
生成的XML结果
用XmlMapper序列化后,会得到预期的结构:
<ExampleClass> <field actionCode="Add">aa</field> </ExampleClass>
内容的提问来源于stack exchange,提问作者SamuelS
相关产品推荐
相关产品推荐

