Mule DataMapper字符串列表

时间:2013-04-16 14:23:13

标签: datamapper mule

我尝试使用以下方案制作复杂的映射(对我来说很复杂):

在:

<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

我无法找到如何让这个工作......如果有人可以帮助我,这可以让我开心=)

1 个答案:

答案 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>