首页 > 解决方案 > Java,Jackson,将对象转换为 xml,无效字符问题

问题描述

我正在尝试使用杰克逊将对象转换为 xml

XmlMapper xmlMapper = new XmlMapper();
            xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
            xmlMapper.writeValue(createFileResult.getFile(), detailsProductDTOs);

但是,因为我的对象在某处包含无效的 xml 字符,所以出现错误。有没有办法告诉杰克逊忽略这种角色?或任何其他解决方案?

Caused by: java.io.IOException: Invalid white space character (0xb) in text to output (in xml 1.1, could output as a character entity)
    at com.ctc.wstx.api.InvalidCharHandler$FailingHandler.convertInvalidChar(InvalidCharHandler.java:56)
    at com.ctc.wstx.sw.XmlWriter.handleInvalidChar(XmlWriter.java:629)
    at com.ctc.wstx.sw.BufferingXmlWriter.writeCharacters(BufferingXmlWriter.java:583)
    at com.ctc.wstx.sw.BaseStreamWriter.writeCharacters(BaseStreamWriter.java:469)
    at com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.writeString(ToXmlGenerator.java:588)

标签: javaxmlserializationjackson

解决方案


最后,我自己解决了这个问题。由于错误表明 xml 1.1 支持这种字符。因此,只需添加以下配置即可解决问题:

xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_1_1, true);

推荐阅读