我从 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 的 FlowFile 输出到 PutFile 处理器(工作)很好)。
也欢迎其他建议!我还在考虑添加一个处理器来执行一些代码(如果可以编辑文件)。虽然看起来很乱。
最佳答案
如果您确定内容以 "
开头和结尾,您可以使用ReplaceText
删除那些处理器并保留“内部”"
。
- 搜索值:
^"(.*)"$
(这意味着“任何内容”的捕获组必须在内容的确切开头和结尾处用双引号引起来) - 重置值(value):
$1
(这意味着将内容替换为排除初始和最终"
的捕获组)
关于apache-kafka - NiFi - 如何从 FlowFile 内容中删除周围的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56586714/