Smooks - XML-XML转换删除了输出XML

时间:2018-02-14 20:55:25

标签: xml escaping freemarker smooks

我正在使用Smooks在freemarker配置模板的帮助下执行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>

1 个答案:

答案 0 :(得分:1)

请参阅Freemarker的auto-escaping,您可以通过添加以下标题来覆盖它:

<#ftl output_format="XML">
  

可以在ftl标头

中强制执行模板的输出格式

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

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

如果在添加上述ftl标头后没有发生转义,则&lt; #ftl output_format =“XML”auto_esc = true&gt;可能有帮助(这意味着FreeMarker配置为使用“禁用”自动转义策略,这通常不推荐)。