我尝试使用以下方案制作复杂的映射(对我来说很复杂):
在:
<root>
<bigrow>
<row>1</row>
<row>second</row>
<row>third</row>
</bigrow>
<bigrow>
<row>4</row>
<row>rowvalue</row>
<row>anotherrowvalue</row>
</bigrow>
</root>
输出:
<entities>
<entity>
<atributeA>1</atributeA>
<atributeB>some</atributeB>
<atributeC>value</atributeC>
</entity>
<entity>
<atributeA>2</atributeA>
<atributeB>another</atributeB>
<atributeC>valuee</atributeC>
</entity>
<entity>
<atributeA>3</atributeA>
<atributeB>ooother</atributeB>
<atributeC>valueee</atributeC>
</entity>
</entities>
我想按顺序映射条目中的行元素,因此所需的结果必须是这样的:
<entities>
<entity>
<atributeA>1</atributeA>
<atributeB>second</atributeB>
<atributeC>third</atributeC>
</entity>
<entity>
<atributeA>4</atributeA>
<atributeB>rowvalue</atributeB>
<atributeC>anotherrowvalue</atributeC>
</entity>
</entities>
我创建地图,将条目和输出作为XML,并从这两个xml生成模式,dataMapper窗口如下所示:
http://i.stack.imgur.com/6CYrR.png
我无法找到如何让这个工作......如果有人可以帮助我,这可以让我开心=)
答案 0 :(得分:0)
Mule附带了一个XSL-T变换器,所以,如果您感兴趣,这里的转换可以在不使用DataMapper重炮的情况下实现您的目标。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<entities>
<xsl:apply-templates />
</entities>
</xsl:template>
<xsl:template match="bigrow">
<entity>
<atributeA>
<xsl:value-of select="child::row[position()=1]/text()" />
</atributeA>
<atributeB>
<xsl:value-of select="child::row[position()=2]/text()" />
</atributeB>
<atributeC>
<xsl:value-of select="child::row[position()=3]/text()" />
</atributeC>
</entity>
</xsl:template>
</xsl:stylesheet>