0

我有这些数据(所有元素都是可选的):

<data>
<optionalElement1>...</optionalElement1>
<optionalElement2>...</optionalElement2>
<optionalElement3>...</optionalElement3>
</data>

我需要将其映射到另一个模式(所有元素都是必需的):

<request> 
<Element1>...</Element1>
<Element2>...</Element2>
<Element3>...</Element3>
</request>

由于原始请求中的元素是可选的,因此映射只会为原始包含的元素生成对应的元素。但是请求的验证将失败。

例子:

<data>
<optionalElement3>
<value1>1</value1>
<value2>2</value2>
</optionalElement3>
</data>

将映射到

<request>
<Element3>
<subelement1>1</subelement1>
<subelement2>2</subelement2>
</Element3>
</request>

验证将失败,因为我缺少 Element1 和 Element2。回应应该是(我认为):

<request>
<Element1 xsi:nil="true" />
<Element2 xsi:nil="true" />
<Element3>
<subelement1>1</subelement1>
<subelement2>2<subelement2>
</Element3>
</request>

我怎样才能在映射中做到这一点?如何确保在输出消息中创建元素?

而且,顺便说一句,如果不存在子元素(比如说“data/optionalElement1/value1”,我如何确保创建了目标子元素“request/Element1/subelement1”?

4

3 回答 3

1

让它变得非常简单。使用 xlst 文件进行映射。

使用简单的 if 条件,您可以检查 opetion 元素的值是否存在,如果值存在则映射,否则映射空(空)值。因此,即使可选元素没有值,也会生成复杂元素。

希望它能解决你的问题。

于 2010-10-04T22:46:04.623 回答
0

何塞,

你会想看看表循环functoid。这是一篇关于它的帖子。

http://geekswithblogs.net/Chilberto/archive/2008/04/16/121274.aspx

将此 functoid 与表提取一起使用应该可以为您提供解决方案。还有一个很好的系列了解映射器。

http://www.bizbert.com/bizbert/2008/02/07/Understanding+The+BizTalk+Mapper+Part+1+Introduction.aspx

-布莱恩

于 2009-04-07T21:51:54.303 回答
0

您可以在映射器中完成所有这些操作。我已经有一段时间没有进入 Biztalk 并且我附近没有它,但我知道映射器中有一些功能可以让您检查是否存在所需的字段。根据这些字段的存在,您可以指定映射器的适当操作是什么。

您可以通过在目标模式中为字段提供默认值来强制创建字段。这也可以通过属性窗口使用映射器来完成。

于 2009-04-06T15:13:43.553 回答