3

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

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

到:

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

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

提前致谢。

4

3 回答 3

3

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

有关示例,请参见此帖子:

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

于 2010-04-20T14:30:31.097 回答
2

不太了解 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>
于 2010-04-16T16:05:58.803 回答
0

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

于 2011-04-13T22:03:32.590 回答