You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apache NiFi中用JoltTransformRecord将XML转JSON并提取子分类数据

Apache NiFi 实现XML转指定格式JSON操作步骤

1. 控制器服务配置

首先需要在NiFi中配置两个控制器服务:

  • XMLReader:用于解析输入的XML数据为Record结构
    核心配置项:
    • Wrap Data in Root Node:设为true,原XML没有统一顶层根节点,开启后会自动封装根节点避免解析报错
    • Use Field Name As Element Name:设为true
  • JsonRecordSetWriter:用于输出转换后的JSON数据
    核心配置保持默认即可,可根据需要调整是否美化输出、是否输出数组包裹。

2. JoltTransformRecord 组件配置

在JoltTransformRecord组件的配置页中,选择上述配置好的XMLReader和JsonRecordSetWriter,Jolt Transformation DSL选择Chain,将以下Jolt规则填入Jolt Specification框中:

[
  {
    "operation": "shift",
    "spec": {
      "Category": {
        "*": {
          "SubCategory": {
            "*": {
              "@(2,CategoryID)": "[&3][&1].CategoryID",
              "SubID": "[&3][&1].SubID",
              "Type": "[&3][&1].Type"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "[]"
      }
    }
  }
]

规则说明:首先遍历所有Category节点,对每个Category下的SubCategory节点,将所属父级的CategoryID关联到对应SubCategory属性中,按Category分组生成二维数组,再将二维数组扁平化,最终输出所有SubCategory组成的一维数组。

3. 输出示例

转换后的JSON格式如下:

[
  {"CategoryID": "1", "SubID": "10", "Type": "A"},
  {"CategoryID": "1", "SubID": "11", "Type": "B"},
  {"CategoryID": "2", "SubID": "10", "Type": "A"},
  {"CategoryID": "2", "SubID": "11", "Type": "B"}
]

注意事项

如果需要同时保留Header节点的信息,可在Jolt规则的第一个shift操作中新增Header属性映射逻辑即可。

内容的提问来源于stack exchange,提问作者Coe john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:30:01