2

是否可以选择在特定流文件内容的循环中执行处理器操作?

作为一个具体的例子,使用时EvaluateXPath我想Phone使用以下方法检查每个子元素的值:

/Parent/Childrens/Child[i]/Phone[@Value='111']
4

2 回答 2

2

您的 JSON 结构是递归的,还是要遍历单个“子”数组?如果是后者,SplitJson 处理器将为数组中的每个元素创建一个新的流文件,然后您可以使用 EvaluateJsonPath 获取每个子元素中“Phone”的值,然后使用 RouteOnAttribute 过滤值为 111 的元素:

在此处输入图像描述

此模板(带有您提供的 JSON 结构的简单版本)可用作 Gist(此处)。请注意,InvokeScriptedProcessor 需要 NiFi 0.5.0+(生成示例 JSON 文件)

于 2016-03-17T20:39:32.730 回答
2

只要该处理器支持传入连接,所有关系都可以被引导回它们来自的处理器。对于您的示例,您可以将“匹配”关系提供回同一处理器,并让它再次评估您正在寻找的路径。这将继续下去,直到该表达式不再计算为匹配项。

于 2016-03-17T13:29:28.150 回答