You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:15:29