繁体   English   中英

如何在从端点返回的xml中添加XML声明

[英]How to add XML declaration in the xml returning from the end-point

我已将以下内容添加到我的应用程序中

@Bean
public MappingJackson2XmlHttpMessageConverter mappingJackson2XmlHttpMessageConverter() {
    MappingJackson2XmlHttpMessageConverter xmlConverter = new MappingJackson2XmlHttpMessageConverter();
    XmlMapper objectMapper = new XmlMapper();
    objectMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
    xmlConverter.setObjectMapper(objectMapper);
    return xmlConverter;
}

但是,返回的 xml 如下,即缺少 xml 声明。 任何想法我还需要添加什么?

<Data>
<description></description>
<codeList>
    <codeList>
        <description>User ID</description>
        <key>dfdfeee</key>
    </codeList>
    <codeList>
        <description>Activation ID</description>
        <key>2ddddd9881</key>
    </codeList>
</codeList>

声明bean:

@Bean
public MappingJackson2XmlHttpMessageConverter mappingJackson2XmlHttpMessageConverter(Jackson2ObjectMapperBuilder builder) {
    XmlMapper xmlMapper = builder.createXmlMapper(true).build();
    xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
    return new MappingJackson2XmlHttpMessageConverter(xmlMapper);
}

顺便说一句,这应该覆盖自动配置的bean

org.springframework.boot.autoconfigure.web.JacksonHttpMessageConvertersConfiguration.MappingJackson2XmlHttpMessageConverterConfiguration

此外,这种方式应该应用所有 XmlMapper/ObjectMapper 自定义,如果你有的话。

也许您可以尝试使用@Order(1) ,它将替换默认 bean。

@Configuration
@Order(1)
public class HttpMessageConverterConfig {

    @Bean
    public MappingJackson2XmlHttpMessageConverter mappingJackson2XmlHttpMessageConverter(
            Jackson2ObjectMapperBuilder builder) {
        XmlMapper xmlMapper = builder.createXmlMapper(true).build();
        xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
        return new MappingJackson2XmlHttpMessageConverter(xmlMapper);
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM