XML Map 端口进阶篇——常用关键字和格式化器详解

这篇具有很好参考价值的文章主要介绍了XML Map 端口进阶篇——常用关键字和格式化器详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

XML Map 端口是用于在不同XML之间建立关系映射的工具,允许通过拖拽操作实现源XML和目标 XML之间的数据字段映射,除此之外,XML Map 端口还提供了其它丰富多彩的功能,使用户能够更加灵活和高效的处理XML 数据映射任务,让我们一同深入探索这些功能吧。

以生成850订单为例:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

点击下载850订单的源文件和目标文件

自定义脚本检查必填字段

使用check、else和 throw 三个关键字组合,代码如下:

<arc:check value="[xpath('字段xpath值') | def | trim]">
  <arc:else>
    <arc:throw code="Miss value" desc="Miss 字段名"/>
  </arc:else>
</arc:check>

以知行之桥EDI系统的XMLMap端口下映射编辑器处理的映射关系为例:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

如上图所示,对于850订单来说,po_no订单号是必须要有的,所以我们需要对订单号进行必填校验,操作如下:

鼠标点击BEG02节点,右键选择新增,点击代码脚本

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

进入到 脚本 页面中:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

复制上文介绍的代码并补充需要进行必填校验的字段名称:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

脚本名称必须填写,本例写的是‘po_no的必填校验’,可根据自己的实际情况填写,填写后保存,显示如下:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

扩展阅读:

check 关键字的使用方法
else关键字的使用方法
throw关键字的使用方法

条件映射编辑器

对于非必填字段,当其值为空时需要跳过该字段所在的segment,从而避免向客户发一个空的segment。这种灵活性使用户能够更好的控制数据映射过程,确保生成的目标文件符合交易伙伴的预期及要求。

使用【条件】进行跳过,例:鼠标浮在需要跳过的节点上,点击蓝色图标:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

进入到条件映射编辑器,并点击添加条件:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

在InputXML中选择对应的字段:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

在等于处选择条件:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

N1Loop1里涉及到两个字段,需要添加两个条件,当shipto_name或 shipto_no有一个不为空时就可进入N1Loop1,两个都为空时则跳过N1Loop1。

条件名称 可根据自身需求填写,可为空:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

然后点击 保存 即可

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

自定义脚本检查物料行信息

代码示例如下:

<rsb:if exp="![hasxpath('')]">
  <rsb:throw code="error" desc="no " />
</rsb:if>

在映射编辑器中涉及到的映射关系如下:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

对于物料部分,按照XML Map的取值逻辑,会先从源文件找PO_ITEM,如果找不到就会跳过,不会进入到具体字段的取值,所以即便你对物料部分的字段值做了必填值校验,也不会进入到这个校验里,所以我们需要对PO_ITEM先进行校验。

点击上图右侧PO1Loop1上面的任何节点,右键选择新增,点击添加代码脚本,弹窗如下:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

复制代码,并根据实际情况修改如下,本例只需要在 脚本名称 下方的方框中填写脚本代码,然后保存即可。

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

脚本添加完成后,映射编辑器中将会显示如下内容:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

表达式编辑器

格式化器支持操作不同xpath返回的值,比如当用户传过来的日期格式与目标格式不同,就需要进行日期格式转换,转换方法如下:

[xpath() | trim | todate('要转换的格式','被转换的格式')]

例:对于订单日期,用户传入EDI的格式是yyyy-MM-dd HH:mm:ss,而客户要求的格式是yyyyMMdd。

操作步骤:鼠标悬停在BEG05节点上,选择表达式。

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

进入表达式编辑器:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

进行todate处理:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

注意:需要先trim去空,再todate

扩展阅读:

文本格式化器trim的使用方法
日期格式化器todate的使用方法

如果传入的日期为空,todate会转成当前日期,所以当传入日期值为空时根据实际情况进行必填校验或者通过条件映射编辑器跳过。

除了todate之外,还有很多常见的字符串处理,比如split,substring ,toupper等

拆分字符串
split(delimiter,indextoreturn)
delimiter:用作分隔符的字符串,以该字符串对整个字段值进行拆分
indextoreturn:字段值被以分隔符拆分后的索引

例:收到一组服装信息,以 ; 隔开存放在一个字段里,需求是要取第二个颜色值,代码如下:

<rsb:set attr="testString" value="sweater;blue;women; wool"/>
<rsb:set attr="item.color" value="[testString | split(';',2)]"/>
<!—item.color:blue-->

XMLMap端口映射编辑器中对于拆分字符串的映射关系处理如下:

比如用户有多个工厂,对应多个编号,传过来的buyer_no字段包含每个工厂对应的编号,以;隔开,目前这个是A工厂发出的订单,要取的是第二个编号。将鼠标悬浮在N104处,点击表达式:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

进入表达式编辑器:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

参考示例代码进行拆分处理:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

保存后显示如下:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

截取字符串
substring (index[,length])
index:索引,从index处开始截取
length:要截取的长度,如果没有指定,则默认截取到该字段结束

例:需要将输入字段的前两位值读到输出字段里

<rsb:set attr="input.value " value="AB1234"/>
<rsb:set attr="output.value" value="[ input.value | substring(0,2)]"/>

在XML Map中的用法参考split格式化器

获取字符串的长度
getlength()
返回字符串的长度

例:将输入字段的长度写到输出字段里

<rsb:set attr="input.value " value="AB1234"/>
<rsb:set attr="output.value" value="[input.value | getlength()]"/>

在XML Map中的用法参考split格式化器

加减乘除计算
add(value) 
返回数字属性值和参数指定的值之和,默认值为1
multiply(value) 
返回数值属性值与参数的指定值相乘的结果,默认值为2
subtract(value)
返回数值属性值与参数指定值之间的差值
divide(value)
返回数值属性值除以参数指定值的结果

例:将输入字段值乘以1000给输出字段

<rsb:set attr="input.value " value="2"/>
<rsb:set attr="output.value" value="[input.value | multiply(1000)]"/>

在XML Map中的用法参考split格式化器

自定义目标文件名称

将业务类型和关键字段以及当前时间放在文件名上,方便有问题时,快速定位查询
代码如下:

<rsb:set attr="_message.header:filename" value="业务类型_[xpath() | trim]_[_ | now | todate('yyMMddHHmm')].xml"/>

例:对于850订单,一般使用订单号来沟通订单数据。

点击BEG节点,右键选择新增,点击添加代码脚本。

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

复制代码,并根据实际情况修改如下,本例脚本名称填写脚本代码,然后保存即可。

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

虚拟节点

虚拟节点就是出现在XML设计器中,但是不会出现在XML输出里的一种特殊节点。
前面提到的脚本代码条件都属于虚拟节点。本章节主要讲解的是XML Map端口中的第三种虚拟节点——循环

循环一般用于减少层级,避免层级结构的重复,将输入文件中的重复元素’扁平化’为输出文件中的非分层结构。常用场景如下:

我们的输入文件如图左,需要的输出文件如图右:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

点开XML Map上传源文件和目标文件,如下图:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

鼠标点击上图右侧的child节点,右键选择 新增,点击 循环 。

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

对循环进行命名并保存。

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

将左侧源Parent节点拖拽到右侧的循环上创建Foreach关系,然后将源child节点拖拽映射到目标child节点。

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI

点击右上角的测试映射进行测试,得到所需输入文件:

XML Map 端口进阶篇——常用关键字和格式化器详解,知行edi,系统对接方式,EDI电子数据交换 | 知行软件,xml,电子数据交换,edi,EDI文章来源地址https://www.toymoban.com/news/detail-833880.html

到了这里,关于XML Map 端口进阶篇——常用关键字和格式化器详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常用的 SQL Server 关键字及其含义

    SQL Server 是一种关系型数据库管理系统(RDBMS),提供了用于管理和操作数据库的各种。 以下是一些常用的 SQL Server 及其含义: SELECT: 用于从数据库中检索数据。 INSERT: 用于将新记录插入到数据库表中。 UPDATE: 用于更新数据库表中的记录。 DELETE: 用于从数据库表

    2024年02月08日
    浏览(59)
  • Java 基础进阶篇(一)——— static 静态关键字与单例模式

    static:代表静态的意思,可以修饰成员变量,可以修饰成员方法。 static 修饰方法之后称为 静态方法(类方法) ,修饰成员变量之后称为 静态成员变量(类变量) 。 static 修饰后的成员变量, 可以被类的所有对象共享 (访问、修改) 。 静态成员变量 实例成员变量 概述 有

    2024年02月01日
    浏览(87)
  • C语言里面那些你必须知道的常用关键字(详细讲解)

      哈喽,各位铁汁们好啊!✨今天来给大家带来的是C语言中我们常用的静态 static 的详细讲解和 typedef 、 #define 定义常量和宏。   既然是详解想必大家必定是想学一些平常学不到的东西吧!这里博主给大家详细讲解 static 修饰的变量在内存重视如何存储的,顺带给

    2024年02月11日
    浏览(43)
  • 【Python】函数进阶 ① ( 函数返回多个返回值 | 函数参数传递类型简介 | 位置参数 | 关键字参数 )

    在函数中 , 如果要 返回 多个返回值 , 可以 在 return 语句中 , 设置多个返回值 , 这些返回值之间使用 逗号 隔开 , 这些返回值的类型是 元组 tuple 类型的 ; 在下面的代码中 , 返回了 3 个返回值 , 其 本质上是返回了一个包含 3 个元素的 元组 数据容器 , 可以使用多重赋值将返回的

    2024年02月11日
    浏览(56)
  • Robot Framweork之UI自动化测试---Selenium2Library常用关键字

    在项目实际自动化测试过程中,主要用到了Selenium2Library库里的一些和内置包BuiltIn的,今天我们就来分享下Selenium2Library常用。 我们把操作主要分为六大类: 一)浏览器操作 二)文本输入 三)点击操作 四)选择/取消选择 五)检查点 六)其他 插播一个小

    2024年02月14日
    浏览(40)
  • static关键字和final关键字

    在java的中,static和final是两个必须掌握的。static和final用法多样,且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面将依次介绍static和final。注意,某些场景下,staic和final可以联合使用

    2024年02月09日
    浏览(61)
  • 搜索引擎优化指南:SEO关键字、长尾关键字、短尾关键字以及反向链接

    SEO 代表“搜索引擎优化”。它是一种数字营销策略,旨在提高网站或网页在搜索引擎未付费结果中的在线可见性。通常,网站在搜索结果页面中排名越高,或在搜索结果列表中显示的频率越高,它将从搜索引擎用户那里获得的访问者就越多。 SEO 策略可以针对各种类型的搜索

    2024年02月04日
    浏览(148)
  • 【iOS】—— 属性关键字及weak关键字底层原理

    参考博客:IOS开发基础——属性(copy strong weak等) 内存管理有关的: weak , assign , strong , retain , copy 线程安全有关的的: nonatomic , atomic 访问权限有关的的: readonly , readwrite (只读,可读写) 修饰变量的: const , static , extern 这些

    2024年02月16日
    浏览(42)
  • 拼多多关键字搜索API-通过关键字获取拼多多商品列表

    pinduoduo.item_search 公共参数 请求地址: pinduoduo/item_search 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secret String 是 调用密钥 api_name String 是 API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等] cache String 否 [yes,no]默认yes,将调用缓存的数据

    2024年02月22日
    浏览(82)
  • 【Java入门】final关键字、static关键字、内部类的认识

    前言 : final是Java中的一个修饰符,用于表示某个变量、方法或者类不能被修改。final可以用于修饰类、方法和变量(局部变量,成员变量)。被final所修饰的类不能被继承,被final所修饰的方法不能被重写,被final所修饰的变量,不能被重新赋值 。 static是Java中的一

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包