gpt4 book ai didi

java - 通过 jboss 上的 resteasy 为 jaxb 配置输出 XML 版本的最佳方法

转载 作者:数据小太阳 更新时间:2023-10-29 02:30:59 25 4
gpt4 key购买 nike

我正在序列化的数据包含 xml 1.0 版中不允许的字符:

<value>this &#18; is not good for 1.0</value>

当 RESTEasy 通过 JAXB 对其进行序列化时,它会生成以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<value>this &#18; is not good for 1.0</value>

哪些 XML 解析器不会解析,因为 1.0 不允许该字符,如果我将 xml 版本设置为 1.1,解析器会很高兴。

我可以通过:

transformer.setOutputProperty(OutputKeys.VERSION, "1.1");

所以我想知道的是配置 jboss/resteasy/jaxb 的最佳方式是什么,这样当它创建转换器时,它使用它配置了这个输出属性。

最佳答案

您可以在 Marshaller 上设置以下内容以创建新 header 。

    // Remove the header that JAXB will generate
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);

// Grab the encoding that will be used for Marshalling
String encoding = (String) marshaller.getProperty(Marshaller.JAXB_ENCODING);

// Specify the new header
marshaller.setProperty("com.sun.xml.bind.xmlHeaders", "<?xml version=\"1.1\" encoding=\"" + encoding + "\">");

在 JAX-RS 环境中,您可以创建 MessageBodyWriter 以这种方式配置 Marshaller。以下对类似问题的回答包括如何执行此操作的示例:

关于java - 通过 jboss 上的 resteasy 为 jaxb 配置输出 XML 版本的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16820161/

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