使用Jackson XmlMapper解析混合内容XML时如何获取根节点自由文本
解决方案
你需要使用Jackson XML提供的@JacksonXmlText注解,用来映射节点下的直接纯文本内容,操作步骤如下:
- 给Root类新增一个用于存储根节点直接文本的字段
- 给该字段添加
@JacksonXmlText注解
修改后的实体类代码示例:
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText; import javax.xml.bind.annotation.XmlRootElement; import lombok.Getter; import lombok.Setter; @XmlRootElement @Getter @Setter public class Root { // 映射根节点下的直接文本内容 @JacksonXmlText private String rootText; private String sub; }
补充说明
- 出现报错的原因是:根节点下不属于任何子节点的纯文本内容,Jackson XmlMapper默认会将其识别为无名称的未知属性,所以抛出
Unrecognized field ""的异常,关闭未知属性报错后该内容就会被直接丢弃。 - 每个类中最多只能有一个被
@JacksonXmlText注解标记的字段。 - 如果你更习惯使用JAXB注解,也可以用
@XmlMixed注解实现类似效果,该注解可以处理节点下混合文本、子节点的场景。
内容的提问来源于stack exchange,提问作者pirho
相关产品推荐
相关产品推荐

