如何使用Jackson XML获取嵌套元素的属性值?
解决Jackson XML反序列化嵌套元素属性的问题
你的问题出在没有正确映射XML的嵌套结构,Jackson XML本身支持嵌套元素的属性反序列化,并非库的限制。
你当前的POJO直接在Element1类里声明attribute字段,Jackson会把Element2的文本内容("Some element value")映射到这个字段,因为它找不到对应Element2的结构。正确的做法是为Element2单独创建POJO,再在Element1中引用它:
首先定义Element2类:
public class Element2 implements Serializable { @JacksonXmlProperty(isAttribute = true) private String attribute; @JacksonXmlText private String value; // 生成getter、setter方法 }
然后修改Element1类,包含Element2的实例:
@JacksonXmlRootElement(localName = "Element1") public class Element1 implements Serializable { @JacksonXmlProperty(localName = "Element2") private Element2 element2; // 生成getter、setter方法 }
这样反序列化后,你就能通过element1.getElement2().getAttribute()拿到"Some String",通过element1.getElement2().getValue()拿到"Some element value"。
另外注意你提供的XML最后一个Element1标签未闭合,应改为</Element1>,否则反序列化会报错。
内容的提问来源于stack exchange,提问作者humiliatedpenguin
相关产品推荐
相关产品推荐

