NiFi-如何从FlowFile内容中删除周围的双引号

时间:2019-06-13 18:36:12

标签: apache-kafka apache-nifi

我从Kafka获取XML或AVRO格式的数据文件。每封邮件都用双引号引起来(例如“ ...”)。我想使用NiFi删除内容周围的双引号。

我不能使用ReplaceText处理器删除所有双引号,因为某些标记在其属性中使用双引号。

我正在尝试使用ExtractText处理器,但是据我所知,正则表达式的输出将放入属性中,而不是替换FlowFile内容。另外,我不确定为正则表达式写什么,因为我需要使用内容长度来删除第一个和最后一个字符。另外,我不能在正则表达式中使用标记名称,因为我也需要对其他内容进行相同的操作。

这是一个如何使用周围的双引号和一些带有双引号的属性来设置XML文件的示例。

"<?xml version="1.0" encoding="UTF-8" standalone="yes"?><t1:Foo1><t2:Foo2 reportIndicator="...">...</t2:Foo2></t1:Foo1>"

我希望使用ConsumeKafka_0_10处理器(工作正常)将带有带有双引号内容的xml的FlowFile输出到另一个处理器(ExtractText?),将带有xml而不带双引号内容的xml输出到FlowFile的FlowFile处理器(工作)很好)。

也接受其他建议!我还考虑添加一个处理器来执行一些代码(如果可以编辑文件)。虽然看起来很乱。

1 个答案:

答案 0 :(得分:2)

如果您确定内容以"开始和结束,则可以使用ReplaceText处理器删除内容,并保留“内部” "

  • 搜索值:^"(.*)"$(这意味着捕获的“任何内容”必须在内容的确切开头和结尾处都用双引号引起来)
  • 替换值:$1(这意味着将内容替换为捕获组,其中不包括初始和最终"