我需要映射一个包含一些不寻常格式数据的传入EDI文档。我想将一些串联的数据转换回目标文档中的原始键值对。
原始键值对被连接成一个长字符串,然后将该字符串按如下方式拆分到EDI文档的几个元素中:
MAN PB <OPTION 1 TOKEN> OPTION 1 VALUE <OPTION 2 TOK
MAN PB EN> OPTION 2 VALUE <OPTION 3 TOKEN> OPTION 3
MAN PB VALUE <OPTION 4 TOKEN> OPTION 4 VALUE <OPTION
MAN PB 5 TOKEN> OPTION 5 VALUE <OPTION 6 TOKEN> OPT
MAN PB ION 6 VALUE
注意:尖括号仅用于将令牌与值分开。这不是编码到EDI文档中的XML数据。
我已经成功地使用Cumulative Concatenate
仿函数将值转换回连接的字符串,然后是脚本仿函数,它清除了一些不需要的字符。我可以将串联的字符串映射到目标文档中的单个字段:
"<OPTION 1 TOKEN> OPTION 1 VALUE <OPTION 2 TOKEN> OPTION 2 VALUE <OPTION 3 TOKEN> OPTION 3 VALUE <OPTION 4 TOKEN> OPTION 4 VALUE <OPTION 5 TOKEN> OPTION 5 VALUE <OPTION 6 TOKEN> OPTION 6 VALUE"
如何将这个重新组合的字符串映射到目标文档中的循环?
目标具有重复的<option>
元素,我希望将字符串拆分和映射,使其看起来像这样:
<item>
...some other stuff...
<option>
<name>OPTION 1 TOKEN</name>
<value>OPTION 1 VALUE</value>
</option>
<option>
<name>OPTION 2 TOKEN</name>
<value>OPTION 2 VALUE</value>
</option>
...remaining options...
</item>
BizTalk似乎没有在这里可以使用的字符串拆分功能,除非丢失了某些内容。
我已经创建了一个C#函数,该函数可以将连接的字符串转换为键值对列表,但是,我无法弄清楚如何在BizTalk b / c脚本中应用此功能,似乎无法与可迭代的返回值一起使用List<>
,IEnuerable<>
等值
我还必须使用MSSQL 2008 R2中的存储过程对数据运行辅助转换过程。我还将考虑基于SQL的解决方案。
您应该能够在用于解析消息的架构中定义它。这是最简单,最佳的处理方式-但是]