Apache NiFi中XML字符集转换无效,需实现XML标签实体转义
解决方案:XML标签转实体编码(而非字符集转换)
你用ConvertCharacterSet处理器没效果,核心原因是需求理解偏差——你要的不是字符集编码转换(UTF-8与ISO-8859-1仅改变字节存储格式,不会修改文本内容),而是将XML标签(或已转义的实体符号)转换为XML实体编码。
正确处理方案(基于NiFi)
根据你的输入和预期输出,本质是要对文本中的XML实体符号进行二次转义(将<转为&lt;,>转为&gt;),可以通过ReplaceText处理器实现:
配置步骤
- 替换
ConvertCharacterSet为ReplaceText处理器 - 核心参数设置:
- Search Value:
& - Replacement Value:
& - Replacement Strategy:
Replace All - Evaluation Mode:
Literal(字面量匹配更高效,无需正则)
- Search Value:
效果验证
输入内容:
<TstH> <Header> <ProductCode>LOCAL</ProductCode> <EffectiveDate>2022-07-18</EffectiveDate> <AgencyCode>USER1</AgencyCode> <AgencyPassword>pwd1</AgencyPassword> <Trace>0</Trace> </Header> </TstH>
处理后输出:
&lt;TstH&gt; &lt;Header&gt; &lt;ProductCode&gt;LOCAL&lt;/ProductCode&gt; &lt;EffectiveDate&gt;2022-07-18&lt;/EffectiveDate&gt; &lt;AgencyCode&gt;USER1&lt;/AgencyCode&gt; &lt;AgencyPassword&gt;pwd1&lt;/AgencyPassword&gt; &lt;Trace&gt;0&lt;/Trace&gt; &lt;/Header&gt; &lt;/TstH&gt;
完全符合你的预期结果。
内容的提问来源于stack exchange,提问作者JakkalsM
相关产品推荐
相关产品推荐

