0

I have input xml like this and need to map Value of Complexelement2.value to variable "Access" in output only when Complexelement2.name is "AccessLevel" .

<main>
    <Complexelement1/>
    <Complexelement2>
        <name>SystemType</name>
        <value>100</value>
    </Complexelement2>
    <Complexelement2>
        <name>AdminId</name>
        <value>606</value>
    </Complexelement2>
    <Complexelement2>
        <name>AccessLevel</name>
        <value>200</value>
    </Complexelement2>
</main>

need some suggestion for this conditional traversing for this in Dataweave- Mulesoft.

biagidp
  • 2,175
  • 3
  • 18
  • 29
  • 0 down vote favorite I have input xml like this and need to map Value of complexelement2.value. to variable "Access" in output only when complexelement2.name is "AccessLevel" . – Arpan K Sharma Mar 19 '18 at 12:30
  • Consider adding an example of how you've already tried to solve this issue so we can better address the issue. – biagidp Mar 19 '18 at 12:37

2 Answers2

0

Try this in Dataweave

 %dw 1.0
 %output application/xml
 ---

 main: { (payload.main filter ($.name == "AccessLevel") map {
     Complexelement2: {
       name:$.name,
       value:$.value
      }
 }) }
0

Another approach using mule xslt transformation

  1. Mule xslt transformer using xslt file transform.xslt

    <mulexml:xslt-transformer mimeType="application/xml" xsl-
    file="src/main/resources/transform.xslt" maxIdleTransformers="2" 
    maxActiveTransformers="5" doc:name="XSLT"/>
    
  2. transform.xslt code

    <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="3.0"   
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" />
    <xsl:template match="/">
    <main>      
    <xsl:copy-of select="/main/Complexelement2[name='AccessLevel']"/>       
    </main>     
    </xsl:template>
    </xsl:stylesheet>
    
  3. Output

    <main>
    <Complexelement2>         
     <name>AccessLevel</name>         
     <value>200</value>     
    </Complexelement2>
    </main>
    
user3366906
  • 149
  • 2
  • 11