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
输出设置为内容而不是属性
我已将 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
输出设置为内容而不是属性