【问题标题】:NiFi - How to remove surrounding double quotes from FlowFile contentsNiFi - 如何从 FlowFile 内容中删除周围的双引号
【发布时间】:2019-06-13 18:36:12
【问题描述】:

我从 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 处理器(工作很好)。

也欢迎其他建议!如果可以编辑文件,我还考虑添加一个处理器来执行一些代码。不过看起来很乱。

【问题讨论】:

    标签: apache-kafka apache-nifi


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢安迪!这样可行。只是为了澄清一下, $1 之所以有效,是因为它从搜索值返回引用括号中的任何内容(即(。*),即引号之间的所有内容)?这就是我从replaceAll函数示例nifi.apache.org/docs/nifi-docs/html/…中了解到的
    猜你喜欢
    • 2011-04-19
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多