是否有选项在循环中执行处理器操作(在特定的流文件内容上)? 例如 - 当使用EvaluateXPath时我想检查foreach Child: /父/儿童/儿童[I] /电话[@值= '111']
答案 0 :(得分:2)
只要该处理器支持传入连接,所有关系都可以返回到它们来自的处理器。对于您的示例,您可以将“匹配”关系提供回同一处理器,并让它再次评估您要查找的路径。这将继续,直到该表达式不再评估为匹配。
答案 1 :(得分:2)
您的JSON结构是递归的,还是您希望迭代单个“Child”数组?如果是后者,SplitJson处理器将为数组中的每个元素创建一个新的流文件,那么你可以使用EvaluateJsonPath获取每个子节点中“Phone”的值,然后使用RouteOnAttribute来过滤那些值为111的那些:
此模板(带有您提供的JSON结构的简单版本)可用作Gist(here)。请注意,InvokeScriptedProcessor(生成示例JSON文件)需要NiFi 0.5.0+