Jackson生成XML缺失<?xml?>声明标签的技术求助
解决Jackson生成XML缺失声明标签的问题
Jackson的XmlMapper默认不会输出XML声明,要加上<?xml version="1.0" encoding="UTF-8" standalone="yes"?>,只需要配置对应的序列化特性即可,以下是具体实现方式:
基础配置(Jackson 2.10+)
创建XmlMapper时启用WRITE_XML_DECLARATION特性,就能自动生成XML声明:
XmlMapper xmlMapper = XmlMapper.builder() .enable(ToXmlGenerator.Feature.WRITE_XML_DECLARATION) .build();
自定义编码与Standalone属性
如果需要明确指定编码为UTF-8,同时确保standalone="yes",可以补充以下配置:
XmlMapper xmlMapper = XmlMapper.builder() .enable(ToXmlGenerator.Feature.WRITE_XML_DECLARATION) .enable(ToXmlGenerator.Feature.WRITE_STANDALONE_AS_XML_DECLARATION) // 强制输出standalone属性 .build(); // 序列化时指定编码 String xmlContent = xmlMapper.writer() .withEncoding("UTF-8") .writeValueAsString(yourSourceObject);
旧版本Jackson(2.10之前)
如果你的项目使用较旧的Jackson版本,用传统的配置方式:
XmlMapper xmlMapper = new XmlMapper(); xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true); xmlMapper.configure(ToXmlGenerator.Feature.WRITE_STANDALONE_AS_XML_DECLARATION, true);
验证输出
配置完成后,序列化生成的XML就会以完整的声明开头,后续紧跟<source>标签。
内容的提问来源于stack exchange,提问作者jbmgil_vlrzz
相关产品推荐
相关产品推荐

