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

SpringBoot/Jackson 2.13.x如何在XML头中输出standalone="yes"?

解决Spring Boot中XML输出头添加standalone="yes"的问题

要在XML声明里强制输出standalone="yes",你可以直接通过Woodstox的输出属性配置实现——你的代码已经在使用Woodstox的WstxOutputProperties,只需额外添加一行属性设置即可:

在mappingJackson2XmlHttpMessageConverter方法中,在设置P_USE_DOUBLE_QUOTES_IN_XML_DECL之后,添加:

xmlMapper.getFactory().getXMLOutputFactory().setProperty(WstxOutputProperties.P_OUTPUT_XML_DECL_STANDALONE, "yes");

修改后的完整配置代码

@Bean
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder()
{
    final AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance());
    return new Jackson2ObjectMapperBuilder().serializationInclusion(JsonInclude.Include.NON_NULL).defaultUseWrapper(false)
                                            .annotationIntrospector(introspector);
}

@Bean
@Autowired
public MappingJackson2XmlHttpMessageConverter mappingJackson2XmlHttpMessageConverter(Jackson2ObjectMapperBuilder builder)
{
    final XmlMapper xmlMapper = builder.createXmlMapper(true).build();
    xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
    xmlMapper.getFactory().getXMLOutputFactory().setProperty(WstxOutputProperties.P_USE_DOUBLE_QUOTES_IN_XML_DECL, true);
    // 新增:设置standalone属性
    xmlMapper.getFactory().getXMLOutputFactory().setProperty(WstxOutputProperties.P_OUTPUT_XML_DECL_STANDALONE, "yes");
    return new MappingJackson2XmlHttpMessageConverter(xmlMapper);
}

原理说明

WstxOutputProperties.P_OUTPUT_XML_DECL_STANDALONE是Woodstox提供的专属属性,用于控制XML声明中的standalone值。设置为"yes"后,生成的XML头会变为:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

内容的提问来源于stack exchange,提问作者Chris Spiking

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:05:22