网站怎么优化seo,深圳网站制作哪里找,优化网站推广教程排名,免费无线XML Map 端口是用于在不同XML之间建立关系映射的工具#xff0c;允许通过拖拽操作实现源XML和目标 XML之间的数据字段映射#xff0c;除此之外#xff0c;XML Map 端口还提供了其它丰富多彩的功能#xff0c;使用户能够更加灵活和高效的处理XML 数据映射任务#xff0c;让…XML Map 端口是用于在不同XML之间建立关系映射的工具允许通过拖拽操作实现源XML和目标 XML之间的数据字段映射除此之外XML Map 端口还提供了其它丰富多彩的功能使用户能够更加灵活和高效的处理XML 数据映射任务让我们一同深入探索这些功能吧。
以生成850订单为例 点击下载850订单的源文件和目标文件
自定义脚本检查必填字段
使用check、else和 throw 三个关键字组合代码如下
arc:check value[xpath(字段xpath值) | def | trim]arc:elsearc:throw codeMiss value descMiss 字段名//arc:else
/arc:check
以知行之桥EDI系统的XMLMap端口下映射编辑器处理的映射关系为例 如上图所示对于850订单来说po_no订单号是必须要有的所以我们需要对订单号进行必填校验操作如下
鼠标点击BEG02节点右键选择新增点击代码脚本 进入到 脚本 页面中 复制上文介绍的代码并补充需要进行必填校验的字段名称 脚本名称必须填写本例写的是‘po_no的必填校验’可根据自己的实际情况填写填写后保存显示如下 扩展阅读
check 关键字的使用方法else关键字的使用方法throw关键字的使用方法
条件映射编辑器
对于非必填字段当其值为空时需要跳过该字段所在的segment从而避免向客户发一个空的segment。这种灵活性使用户能够更好的控制数据映射过程确保生成的目标文件符合交易伙伴的预期及要求。
使用【条件】进行跳过例鼠标浮在需要跳过的节点上点击蓝色图标 进入到条件映射编辑器并点击添加条件 在InputXML中选择对应的字段 在等于处选择条件 N1Loop1里涉及到两个字段需要添加两个条件当shipto_name或 shipto_no有一个不为空时就可进入N1Loop1两个都为空时则跳过N1Loop1。
条件名称 可根据自身需求填写可为空 然后点击 保存 即可 自定义脚本检查物料行信息
代码示例如下:
rsb:if exp![hasxpath()]rsb:throw codeerror descno /
/rsb:if
在映射编辑器中涉及到的映射关系如下 对于物料部分按照XML Map的取值逻辑会先从源文件找PO_ITEM如果找不到就会跳过不会进入到具体字段的取值所以即便你对物料部分的字段值做了必填值校验也不会进入到这个校验里所以我们需要对PO_ITEM先进行校验。
点击上图右侧PO1Loop1上面的任何节点右键选择新增点击添加代码脚本弹窗如下 复制代码并根据实际情况修改如下本例只需要在 脚本名称 下方的方框中填写脚本代码然后保存即可。 脚本添加完成后映射编辑器中将会显示如下内容 表达式编辑器
格式化器支持操作不同xpath返回的值比如当用户传过来的日期格式与目标格式不同就需要进行日期格式转换转换方法如下:
[xpath() | trim | todate(要转换的格式,被转换的格式)]
例对于订单日期用户传入EDI的格式是yyyy-MM-dd HH:mm:ss而客户要求的格式是yyyyMMdd。
操作步骤鼠标悬停在BEG05节点上选择表达式。 进入表达式编辑器 进行todate处理 注意需要先trim去空再todate
扩展阅读
文本格式化器trim的使用方法日期格式化器todate的使用方法
如果传入的日期为空todate会转成当前日期所以当传入日期值为空时根据实际情况进行必填校验或者通过条件映射编辑器跳过。
除了todate之外还有很多常见的字符串处理比如splitsubstring toupper等
拆分字符串
split(delimiter,indextoreturn)
delimiter:用作分隔符的字符串以该字符串对整个字段值进行拆分
indextoreturn字段值被以分隔符拆分后的索引
例收到一组服装信息以 ; 隔开存放在一个字段里需求是要取第二个颜色值代码如下:
rsb:set attrtestString valuesweater;blue;women; wool/
rsb:set attritem.color value[testString | split(;,2)]/
!—item.color:blue--
XMLMap端口映射编辑器中对于拆分字符串的映射关系处理如下
比如用户有多个工厂对应多个编号传过来的buyer_no字段包含每个工厂对应的编号以隔开目前这个是A工厂发出的订单要取的是第二个编号。将鼠标悬浮在N104处点击表达式 进入表达式编辑器 参考示例代码进行拆分处理 保存后显示如下 截取字符串
substring (index[,length])
index:索引从index处开始截取
length要截取的长度如果没有指定则默认截取到该字段结束
例需要将输入字段的前两位值读到输出字段里
rsb:set attrinput.value valueAB1234/
rsb:set attroutput.value value[ input.value | substring(0,2)]/
在XML Map中的用法参考split格式化器
获取字符串的长度
getlength()
返回字符串的长度
例将输入字段的长度写到输出字段里
rsb:set attrinput.value valueAB1234/
rsb:set attroutput.value value[input.value | getlength()]/
在XML Map中的用法参考split格式化器
加减乘除计算
add(value)
返回数字属性值和参数指定的值之和,默认值为1
multiply(value)
返回数值属性值与参数的指定值相乘的结果默认值为2
subtract(value)
返回数值属性值与参数指定值之间的差值
divide(value)
返回数值属性值除以参数指定值的结果
例将输入字段值乘以1000给输出字段
rsb:set attrinput.value value2/
rsb:set attroutput.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设计器中但是不会出现在XML输出里的一种特殊节点。 前面提到的脚本代码、条件都属于虚拟节点。本章节主要讲解的是XML Map端口中的第三种虚拟节点——循环。
循环一般用于减少层级避免层级结构的重复将输入文件中的重复元素’扁平化’为输出文件中的非分层结构。常用场景如下
我们的输入文件如图左需要的输出文件如图右 点开XML Map上传源文件和目标文件如下图: 鼠标点击上图右侧的child节点右键选择 新增点击 循环 。 对循环进行命名并保存。 将左侧源Parent节点拖拽到右侧的循环上创建Foreach关系然后将源child节点拖拽映射到目标child节点。 点击右上角的测试映射进行测试得到所需输入文件