XML 结果从 ExecuteSQL 到 PutMarkLogic

XML results from ExecuteSQL to PutMarkLogic

我已将 ExecuteSQL 处理器用于 运行 存储过程,导致单行和单列称为 "xml",其中包含存储过程生成的 XML程序。 PutMarkLogic 处理器期望 FlowFiles 的内容只有 XML。如何将 FlowFile 内容转换为正确的形式?

来自 ExecuteSQL 的 FlowFiles 的内容看起来有点像这样:

Objavro.schema�{"type":"record","name":"NiFi_ExecuteSQL_Record","namespace":"any.data","fields":[{"name":"xml","type":["null","string"]}]}avro.codenull:info><es:title>instance</es:title><es:version>1.0.0</es:version></es:info><!-- more XML--></es:envelope>

这就是我将 failed 关系指向 PutFile 时所看到的(它将二进制写为文本,因此其中有一些时髦的控制字符)。我想在内容中包含的只是 XML 内容。

您可能想使用带有正则表达式的 ReplaceText 来删除非 XML 的内容。如果您提供示例输出和所需的 "destination" 内容,我可以为您提供一个正则表达式来执行此操作。

使用以下流程:

ExecuteSQL -> ConvertAvroToJson -> EvaluateJsonPath -> PutMarkLogic 

不要忘记将 EvaluateJsonPath 输出设置为内容而不是属性