Nifi-如何将XML全部内容插入JSON属性

时间:2018-10-14 21:14:15

标签: apache-nifi

我正在尝试将XML文件行的全部内容插入JSON属性(我是新手)。

我正在这样做(告诉我是否有更简单的方法,到现在为止还不错):

enter image description here

我已经配置了以这种方式提取文本:

enter image description here

最后,我配置替换文本,并给出JSON格式:

enter image description here

但是他的结果似乎是错误的(不能像普通的JSON文件那样工作,例如,如果我尝试执行httpPost的话):

enter image description here

如何解决此问题?

欢呼

1 个答案:

答案 0 :(得分:6)

如果您担心new linesjson key/values,请在提取的属性(data)上使用NiFi expression language函数。

替换文本配置:

enter image description here 替换价值:

{"name" : "user1","time" : "${now()}","data" : "${data:replaceAll('\s',''):escapeJson()}"}

使用 escapeJson replaceAll 函数替换所有空格,换行符为'' 替换策略为Always Replace

(或)

准备json消息的另一种方法是使用 AttributesToJson 处理器。 如果我们使用的是此处理器,则需要使用 UpdateAttribute 处理器

在AttributesToJson处理器之前准备属性/值

流量

1.SplitXml
2.ExtractText //add data property to extract content to flowfile attribute
3.UpdateAttribute //add name property -> user1 
                    add time property -> ${now()} 
                    add data property -> ${data:replaceAll('\s',''):escapeJson()}}
4.AttributeToJson //Attributes List -> name,time,data
                    Destination     -> flowfile content
                    include core attributes -> false