如何在BizTalk 2013 R2中将定界字符串映射到循环?

问题描述 投票:0回答:1

我需要映射一个包含一些不寻常格式数据的传入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的解决方案。

biztalk edi biztalk-mapper
1个回答
0
投票

您应该能够在用于解析消息的架构中定义它。这是最简单,最佳的处理方式-但是]

© www.soinside.com 2019 - 2024. All rights reserved.