biztalk - 如何将分隔字符串映射到 BizTalk 2013 R2 中的循环?
问题描述
我需要映射一个传入的 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 数据。
部分转换
我已经使用 functoid 成功地将值转换回连接字符串Cumulative Concatenate
,然后使用脚本 functoid 清除一些不需要的字符。我可以将连接的字符串映射到目标文档中的单个字段:
"<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 的解决方案。
解决方案
您应该能够在用于解析消息的模式中定义它。这是最简单和最好的处理方式 - 但是有
推荐阅读
- microsoft-graph-api - 尝试使用 Graph 列出团队频道选项卡时遇到“404-未知错误”
- android - 在 build.gradle 文件中添加 buildFeatures 时出错
- mysql - Mysql Query:在单个查询中推荐多少 sum()?
- cpu - cpu核心中dispatch、commit、issue和squash宽度的区别
- oracle - 在 PL/SQL Developer 中从 table@dblink 中选择 *
- c# - 如何将我的 C# wpf 代码转换为可以在没有 Visual Studio 的情况下运行的应用程序?
- php - 搜索具有多个条件的记录
- c - 我无法处理写直方图
- reactjs - createMaterialTopTabNavigator inside a CardView?
- c# - 从 CaretPosition 在 RichTextBox 中写入样式文本