当前位置: 首页 > news >正文

XML Group端口详解

在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开发复杂度。

为解决这一问题,知行之桥推出了XML Group端口功能,通过可视化配置即可实现分组聚合需求,无需编写任何脚本代码。

配置指南
1.示例文件

在XML Group端口的分组配置选项卡中,开启示例文件,上传要进行分组聚合的XML,上传完成后,所有XPATH配置项均可通过下拉菜单选择,无需手动输入。

XML-Group-connector1.png

XML-Group-connector2.png

2.循环设置

记录XPATH:指定需要循环处理的XPATH路径
元素名称:为循环后形成的新节点设置名称

XML-Group-connector3.png

3.分组设置

键值XPATH:指定作为分组依据的元素XPATH
元素名称:为分组后的新节点设置名称
添加键值XPath:支持添加多个分组条件

XML-Group-connector4.png

4.聚合设置

键值XPATH:对分组后的某个元素进行函数处理
函数:支持的函数操作,例如例如求和、找出最大/最小值、求平均值等
元素名称:为函数处理后的新节点设置名称
添加键值XPath:支持添加多个聚合元素

XML-Group-connector5.png

应用示例
原始XML结构
<Items><Invoice><InvoiceDetail><MaterialCode>ALPHA</MaterialCode><MaterialCodeDescription>Alpha Materials</MaterialCodeDescription><NetAmount>1000.00</NetAmount></InvoiceDetail><InvoiceDetail><MaterialCode>ALPHA</MaterialCode><MaterialCodeDescription>Alpha Materials</MaterialCodeDescription><NetAmount>2000.00</NetAmount></InvoiceDetail><InvoiceDetail><MaterialCode>BRAVO</MaterialCode><MaterialCodeDescription>Bravo Materials</MaterialCodeDescription><NetAmount>100.00</NetAmount></InvoiceDetail><InvoiceDetail><MaterialCode>CHARLIE</MaterialCode><MaterialCodeDescription>Charlie Materials</MaterialCodeDescription><NetAmount>500.00</NetAmount></InvoiceDetail><InvoiceDetail><MaterialCode>CHARLIE</MaterialCode><MaterialCodeDescription>Charlie Materials</MaterialCodeDescription><NetAmount>100.00</NetAmount></InvoiceDetail></Invoice>
</Items>

这是一个发票XML结构,其中包含多个发票明细(InvoiceDetail),明细中包含物料号(MaterialCode)、物料描述(MaterialCodeDescription)以及净价(NetAmount)。在发票明细中存在重复的物料号(MaterialCode)。

若我们要按照相同的物料号进行分组,并对相同物料号的产品价格求和,我们可以使用XML Group端口实现。

首先我们在示例文件中上传这个XML文件。

在循环设置中,因为要对InvoiceDetail进行循环,所以记录XPATH选择InvoiceDetail,并为其赋予新的元素节点名称为InvoiceDetailGroup。

XML-Group-connector6.png

在分组设置中,因为要以MaterialCode作为分组条件,所以分组配置如下,XPATH选择MaterialCode,并为其赋予分组后新的元素节点名称:MaterialCode。

XML-Group-connector7.png

在聚合设置中,要对净价进行求和,所以聚合配置如下:

XML-Group-connector8.png

配置完成后,我们在输入中上传测试文件,在输出中即可得到分组聚合后的XML如下:

<Items><Invoice><InvoiceDetailGroup><MaterialCode>ALPHA</MaterialCode><NetAmountSUM>3000</NetAmountSUM><InvoiceDetail><MaterialCode>ALPHA</MaterialCode><MaterialCodeDescription>Alpha Materials</MaterialCodeDescription><NetAmount>1000.00</NetAmount></InvoiceDetail><InvoiceDetail><MaterialCode>ALPHA</MaterialCode><MaterialCodeDescription>Alpha Materials</MaterialCodeDescription><NetAmount>2000.00</NetAmount></InvoiceDetail></InvoiceDetailGroup><InvoiceDetailGroup><MaterialCode>BRAVO</MaterialCode><NetAmountSUM>100.00</NetAmountSUM><InvoiceDetail><MaterialCode>BRAVO</MaterialCode><MaterialCodeDescription>Bravo Materials</MaterialCodeDescription><NetAmount>100.00</NetAmount></InvoiceDetail></InvoiceDetailGroup><InvoiceDetailGroup><MaterialCode>CHARLIE</MaterialCode><NetAmountSUM>600</NetAmountSUM><InvoiceDetail><MaterialCode>CHARLIE</MaterialCode><MaterialCodeDescription>Charlie Materials</MaterialCodeDescription><NetAmount>500.00</NetAmount></InvoiceDetail><InvoiceDetail><MaterialCode>CHARLIE</MaterialCode><MaterialCodeDescription>Charlie Materials</MaterialCodeDescription><NetAmount>100.00</NetAmount></InvoiceDetail></InvoiceDetailGroup></Invoice>
</Items>

我们可以看到,处理后的XML文件具有以下特点:

①相同物料号的明细被聚合到对应的InvoiceDetailGroup节点下
②每个分组节点包含物料代码和净价求和结果(NetAmountSUM)
③保留了原始明细数据的完整信息
④实现了零代码的分组聚合需求

到这里我们对XML的分组聚合就完成了,但我们可以看到,最终分组后的XML结构多了一个层级,如果希望保留原有的XML结构,那么可以在XML Group端口后使用XML Map端口来实现:

XML-Group-connector9.png

在XML Map的设置中,源文件中上传XMLGroup输出的文件,目标文件上传XMLGroup输入的文件。按照如下关系形成映射:

XML-Group-connector10.png

注意,还需要删除模板文件中的冗余字段,来源模板文件中仅保留InvoiceDetailGroup节点以及其内部的一个InvoiceDetail节点。目标模板文件中则保留一个InvoiceDetail节点。

保存映射后,在XML Group端口的输入中再次上传示例文件,在XML Map端口的输出中可看到输出结果:

<?xml version="1.0" encoding="UTF-8" ?>
<Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Invoice><InvoiceDetail><MaterialCode>ALPHA</MaterialCode><MaterialCodeDescription>Alpha Materials</MaterialCodeDescription><NetAmount>3000</NetAmount></InvoiceDetail><InvoiceDetail><MaterialCode>BRAVO</MaterialCode><MaterialCodeDescription>Bravo Materials</MaterialCodeDescription><NetAmount>100.00</NetAmount></InvoiceDetail><InvoiceDetail><MaterialCode>CHARLIE</MaterialCode><MaterialCodeDescription>Charlie Materials</MaterialCodeDescription><NetAmount>600</NetAmount></InvoiceDetail></Invoice>
</Items>

我们可以看出,经过XML Map再次映射后,去掉了多出的,将相同物料编码的InvoiceDetail聚合在了同一个,并对净价进行了求和操作。

通过XML Group端口,用户可以轻松实现复杂的数据分组聚合操作,XML Group端口和XML Map端口结合使用,可以零代码处理绝大多数XML之间的映射和转换,能够大幅提升XML数据处理的效率和便捷性。

如果您希望了解有关EDI对接的相关信息,欢迎交流。

阅读原文

http://www.xdnf.cn/news/967285.html

相关文章:

  • RSA算法
  • 第4章 对象与类
  • 基于51单片机的热敏电阻测温及温度调控系统
  • SpringBoot项目使用Redis作为数据缓存
  • 业务:资产管理功能
  • 亚远景-ASPICE评估标准解析:汽车软件开发的过程能力模型
  • 【Java多线程从青铜到王者】懒汉模式的优化(九)
  • WebLogic简介
  • 第6章 方法 笔记
  • DevSecOps实践:CI/CD流水线集成SAST工具的完整指南
  • 【LeetCode】二叉树相关算法题
  • 笔记 软件工程复习
  • Vue.js教学第二十二章:vue实战项目商城项目
  • el-upload组件,上传文件失败,:on-error方法失效
  • 人工智能与大数据融合发展:新一代智能系统的演进路径
  • 计算机行业光辉开始暗淡
  • Unity3D中Gfx.WaitForPresent优化方案
  • 性能监控的核心要点
  • RestClient
  • AI书签管理工具开发全记录(二十):打包(完结篇)
  • 零基础学前端-传统前端开发(第一期-开发软件介绍与本系列目标)(VScode安装教程)
  • 群晖Nas - Docker(ContainerManager)上安装GitLab
  • Linux内核 -- INIT_WORK 使用与注意事项
  • Windows 文件路径与文件名限制
  • 如何根据excel表生成sql的insert脚本
  • ABP vNext + Hive 集成:多租户大数据 SQL 查询与报表分析
  • 【iOS】cell的复用以及自定义cell
  • 使用NNI剪枝工具对VGG16网络进行剪枝,同时使用知识蒸馏对剪枝后结果进行优化。(以猫狗二分类为例)
  • 认证与授权的区别与联系
  • 看板任务描述不清如何解决