【发布时间】:2019-02-23 02:27:40
【问题描述】:
我有一个 NiFi 流,其中包括将 XML 转换为 JSON。这样做是为了准备要插入 MongoDB 的数据。我正在使用 TransformXML 处理器和 XSL 进行转换。这是正确的方法吗?通常,我会说 XSLT 不是将 XML 转换为 JSON 的最佳方式,但它无法在 NiFi 中找到另一种方式。
【问题讨论】:
标签: apache-nifi
我有一个 NiFi 流,其中包括将 XML 转换为 JSON。这样做是为了准备要插入 MongoDB 的数据。我正在使用 TransformXML 处理器和 XSL 进行转换。这是正确的方法吗?通常,我会说 XSLT 不是将 XML 转换为 JSON 的最佳方式,但它无法在 NiFi 中找到另一种方式。
【问题讨论】:
标签: apache-nifi
如果您的 XML 具有特定结构(非动态),您可以使用ConvertRecord 处理器。
XMLReader 读取XML。为此,您必须定义一个avro schema。JsonRecordSetWriter 写入转换结果。在这种状态下,如果您不想更改结构,则无需更改 JsonRecordSetWriter 上的任何内容。更多信息,我建议你看看下面的链接。
https://pierrevillard.com/2018/06/28/nifi-1-7-xml-reader-writer-and-forkrecord-processor/
【讨论】:
嗯,使用 Apache NiFi 转换 XML 数据有两种最可取的方法:
A.将TransformXML 处理器与XSLT 文件一起使用
有很多示例提供了使用 XSLT 将任何 XML 转换为 JSON 文档的解决方案。它非常易于使用。但根据您的要求,您可能需要特定的功能。
例如https://community.hortonworks.com/articles/29474/nifi-converting-xml-to-json.html
https://gist.github.com/speby/9561961e06dc1b38822764b26ddc2159
https://community.hortonworks.com/questions/91784/could-transformxml-work-with-several-xslts.html
B. 使用带有 JSONObject 库的 Java 处理器
使用这种方法,您需要编写自己的自定义处理器。
注意: org.json 在许可方面不 Apache 友好。
一个很好的例子是: https://gist.github.com/pvillard31/408c6ba3a9b53880c751a35cffa9ccea
【讨论】: