gpt4 book ai didi

xml - 如何使用 Jackson XmlMapper 控制编码?

转载 作者:行者123 更新时间:2023-12-04 01:51:34 32 4
gpt4 key购买 nike

我找不到一种(很明显的)方法来将序列化 XML 的编码从默认的 UTF-8 更改为 ISO-8859-1。我读了Usage Guide ,这让我认为必须有一种方法可以将 XMLOutputFactoryXmlFactory 一起使用来实现这一点,但我看不到一种方法来配置这些工厂中的任何一个以使用另一个工厂默认情况下编码,只有 createXMLEventWriter 我可以在其中传递编码。

我知道如何使用 ToXmlGenerator.Feature.WRITE_XML_DECLARATION 生成 XML 声明。所以我需要的是这样的声明:

<?xml version='1.0' encoding='ISO-8859-1'?>

当然,内容也应该用 ISO-8859-1 编码。

最佳答案

ToXmlGenerator source code ,你会发现 UTF-8 是硬编码的:

if (Feature.WRITE_XML_1_1.enabledIn(_formatFeatures)) {
_xmlWriter.writeStartDocument("UTF-8", "1.1");
} else if (Feature.WRITE_XML_DECLARATION.enabledIn(_formatFeatures)) {
_xmlWriter.writeStartDocument("UTF-8", "1.0");
} else {
return;
}

一次ToXmlGeneratorfinal 可能没有简单的方法来处理它。我已经提交了 issuejackson-dataformat-xml项目。


如果您坚持使用 JAXB,则可以使用 Marshaller.JAXB_ENCODING 控制 encoding 属性的值:

Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
marshaller.marshal(foo, System.out);

查看此 answer .

关于xml - 如何使用 Jackson XmlMapper 控制编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52778143/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com