有没有办法在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>
我必须在节点列表中聚合一些元素。
提前致谢。
答案 0 :(得分:3)
您还可以在地图中使用TableLooping / TableExtractor functoid来构建目标节点。
请参阅此帖子以获取示例:
http://hestia.typepad.com/flatlander/2007/01/mapping_fixed_e.html
答案 1 :(得分: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>
答案 2 :(得分:0)
看起来你有一个从输入到输出的直接映射。执行映射时,右键单击从输入到输出的线。选择“属性”。可以选择复制输入节点的值或输入节点的名称。您可以使用每个子节点中的两个映射,一个用于提取名称,另一个用于值。