Warrior
Warrior

Reputation: 59

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

I have added the following into my Application

@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;
}

However, the xml returned as follows i.e. the xml declaration is missing. any ideas what else I need to add?

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

Upvotes: 1

Views: 3551

Answers (2)

luke
luke

Reputation: 1

may be you can try to use @Order(1),it will be replace default 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);
    }

}

Upvotes: 0

seregamorph
seregamorph

Reputation: 472

Declare 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);
}

BTW, this should override the bean auto-configured in

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

Also, this way should apply all XmlMapper/ObjectMapper customizations, if you have.

Upvotes: 5

Related Questions