Smooks - XML-XML 转换删除输出中转义的字符 XML

Smooks - XML-XML transformation removes the character escaping in the output XML

我正在 freemarker 配置模板的帮助下使用 Smooks 执行 XML-XML 转换。

但是,当我的输入 XML 转义字符时

<Retail>H&amp;M</Retail>

转换后的输出 XML 将只有

<Retail>H&M</Retail>

转义被移除,这使得输出XML无效。

我该如何解决这个问题?

这是我的 freemarker 模板

<?xml version="1.0"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd">
<params>
    <param name="stream.filter.type">SAX</param>
    <param name="default.serialization.on">false</param>
</params>
<resource-config
    selector="combinedResponse">
    <resource>org.milyn.delivery.DomModelCreator</resource>
</resource-config>
<ftl:freemarker applyOnElement="combinedResponse">
    <ftl:template><!--
<BODY>
   <Retail>${combinedResponse.Retail}</Retail>
</BODY>
-->
    </ftl:template>
</ftl:freemarker>

参见 Freemarker 的 auto-escaping,您可以通过添加以下 header:

来覆盖它
<#ftl output_format="XML">

the output format of a template can be enforced in the the ftl header

如果不起作用,请尝试添加

<#ftl output_format="XML" auto_esc=true>

If escaping doesn't happen after adding the above ftl header, then <#ftl output_format="XML" auto_esc=true> might helps (and that means that FreeMarker was configured to use "disable" auto-escaping policy, which is generally not recommended).