代码之家  ›  专栏  ›  技术社区  ›  Pablo Castilla

Biztalk映射:将不同节点分组到列表中

  •  3
  • Pablo Castilla  · 技术社区  · 15 年前

    在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>
    

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

    事先谢谢。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Tomalak    15 年前

    不太了解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>
    
        2
  •  3
  •   BizTalkMama    15 年前

    您还可以使用映射中的“表循环/TableExtractor”functoid来构建目标节点。

    请参阅本文中的示例:

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

        3
  •  0
  •   Jay    14 年前

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