我正在使用Smooks在freemarker配置模板的帮助下执行XML-XML转换。
但是,当我的输入XML转义了像
这样的字符时<Retail>H&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>
答案 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配置为使用“禁用”自动转义策略,这通常不推荐)。