我如何通过 NiFi 将 json 转换为 soap xml 格式

How can i convert json to soap xml format by NiFi

我正在尝试使用 json 输入来使用 soap ws。我一直在将 json 转换为 xml。如何使用 NiFi 创建从 json 转换为 soap xml 格式的流程。

没有直接将JSON转换为XML的处理器。一种选择是将 ExecuteScript 与执行转换的 Groovy 脚本一起使用。看起来有一些使用 Groovy:

将 JSON 转换为 XML 的示例

我有一个类似的场景,其中 Oracle 注册器需要一个接一个地输入 XML POST HTTP。

为了解决这个问题,我创建了后续流程,我在设置的位置添加了一些细节 (parameters/configurations):

1) 执行SQL记录, 详情:

  • SQL select query: select id, ip from server_table
  • 记录器:JsonRecordSetWriter
  • 每个流文件的最大行数:1

2) EvaluateJsonPath, 详情:

  • 目的地:流文件属性
  • 附加属性 1:local.id
  • 附加值 1:$.[0].id
  • 附加属性 2:local.ip
  • 附加值2:$.[0].ip

3) ReplaceText, 详情:

  • 搜索值:(?s)(^.*$)
  • 重置价值(XML):
    <item>
        <id>${local.id}</id>
        <ip>${local.ip}</ip>
    </item>
  • 替换策略:始终替换

4) 调用 HTTP, 详情:

您可以将流文件中的 JSON 内容通过管道传输到 ConvertRecord 处理器。这个处理器接收一个 reader 和一个 writer。然后你可以配置一个 JSON 树 Reader 来解析你的 JSON 内容,而作者需要是一个 XMLRecordSetWriter。确保在编写器的配置中指定元素名称。现在,这是一个 vanilla writer,它只是创建一个 XML 相当于你的 JSON.

输入:

{
   "firstname": "John",
   "lastname": "Doe",
   "age": "45",
}

输出:

<person>
   <firstname>John</firstname>
   <lastname>Doe</lastname>
   <age>45</age>
</person>

现在一旦有了 XML,就可以通过 TransformerXML 处理器对其进行管道传输。您应该能够将处理器设置为使用 XSLT 根据您的规范创建 SOAP XML 负载。