Biztalk 地图:将不同的节点分组到一个列表中

发布于 2024-08-29 20:31:35 字数 513 浏览 5 评论 0原文

有没有办法在BT映射器中实现以下转换?如果没有,有什么聪明的主意吗?

<Person>
<Age>25</Age>
<Name>Paul</Name>
</Person>

to:

<Person>
<CustomProperties>
<CustomProperty>
<Name>Age</Name>
<Value>25</VAlue>
</CustomProperty>
<CustomProperty>
<Name>Name</Name>
<Value>Paul</VAlue>
</CustomProperty>
</CustomProperties>

我必须聚合节点列表中的一些元素。

提前致谢。

Is there a way of achieve the following transformation in the BT mapper? if not, any smart idea?

<Person>
<Age>25</Age>
<Name>Paul</Name>
</Person>

to:

<Person>
<CustomProperties>
<CustomProperty>
<Name>Age</Name>
<Value>25</VAlue>
</CustomProperty>
<CustomProperty>
<Name>Name</Name>
<Value>Paul</VAlue>
</CustomProperty>
</CustomProperties>

I have to aggregate a few elements in a list of nodes.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

毁梦 2024-09-05 20:31:35

您还可以在地图中使用 TableLooping / TableExtractor functoid 来构建目标节点。

请参阅此帖子的示例:

http://hestia.typepad.com/flatlander /2007/01/mapping_fixed_e.html

You can also use the TableLooping / TableExtractor functoids in your map to build the destination nodes.

See this post for an example:

http://hestia.typepad.com/flatlander/2007/01/mapping_fixed_e.html

赴月观长安 2024-09-05 20:31:35

对 BizTalk 映射器了解不多,但所需的 XSLT 相当简单:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="Person">
    <xsl:copy>
      <CustomProperties>
        <xsl:apply-templates select="*" />
      </CustomProperties>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="Person/*">
    <CustomProperty>
      <Name><xsl:value-of select="name()" /></Name>
      <Value><xsl:value-of select="." /></Value>
    </CustomProperty>
  </xsl:template>
</xsl:stylesheet>

Don't know much about the BizTalk mapper, but the required XSLT would be fairly straight-forward:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="Person">
    <xsl:copy>
      <CustomProperties>
        <xsl:apply-templates select="*" />
      </CustomProperties>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="Person/*">
    <CustomProperty>
      <Name><xsl:value-of select="name()" /></Name>
      <Value><xsl:value-of select="." /></Value>
    </CustomProperty>
  </xsl:template>
</xsl:stylesheet>
意犹 2024-09-05 20:31:35

看起来您有一个从输入到输出的直接映射。当您进行映射时,右键单击从输入到输出绘制的线。选择“属性”。有一些选项可以复制输入节点的值或输入节点的名称。您可以使用每个子节点的两个映射,一个用于提取名称,另一个用于提取值。

It looks like you have a straight forward mapping from input to output. When you do your mapping right click on the line drawn from the input to the output. Select "Properties". There are options to either copy the value of the input node or the name of the input node. You can use two mappings from each child node, one to extract the name and one for the value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文