0

I have following java xml file which is having array and level=1 and length=3, I tried using for-each but how to get all values upto length =3 ?

input xml -

<field name="demoCon">
          <array class="com.demo.xml.Message" length="3" level="1">
            <object class="com.demo.xml.Message">
              <field name="myCode">
                <value class="java.lang.String">123</value>
              </field>
              <field name="Name">
                <value class="java.lang.String"/>
              </field>            
            </object>
           <object class="com.demo.xml.Message">
              <field name="myCode">
                <value class="java.lang.String">456</value>
              </field>
              <field name="Name">
                <value class="java.lang.String"/>
              </field>            
            </object>
          <object class="com.demo.xml.Message">
              <field name="myCode">
                <value class="java.lang.String">789</value>
              </field>
              <field name="Name">
                <value class="java.lang.String"/>
              </field>            
            </object>
          </array>
        </field>

xslt i tried with following code -

<demoCon>     
              <xsl:for-each select="field[@name= 'demoCon']/array[@class='com.demo.xml.Message']/object[@class='com.demo.xml.Message']">

                <xsl:variable name="var:DemoName2" select="@name" />
                <xsl:variable name="var:DemoValue2" select="value/text()" />

                <myCode>
                  <xsl:if test="string($var:varName2)='myCode'">
                    <xsl:value-of select="$var:varValue2" />
                  </xsl:if>
                </myCode>
                <Name>
                  <xsl:if test="string($var:varName2)='conditionName'">
                    <xsl:value-of select="$var:varValue2" />
                  </xsl:if>
                </Name>

              </xsl:for-each>
            </demoCon>

am i missing something I guess yes level=1 and length = 3 in above xslt code.

1 Answer 1

1

Your XSLT has defined variables called var:DemoName2 and var:DemoValue2, but in your xsl:if statements you test for $var:varName2 and use $var:varValue2.

I don't think you need to worry about using variables here. You can simplify the code to this....

<xsl:for-each select="field[@name= 'demoCon']/array[@class='com.demo.xml.Message']/object[@class='com.demo.xml.Message']">
  <myCode>
    <xsl:value-of select="field[@name='myCode']/value" />
  </myCode>
  <Name>
    <xsl:value-of select="field[@name='Name']/value" />
  </Name>
</xsl:for-each>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.