我关注java xml file
array and level=1 and length=3
,
我tried using for-each
但how to get all values upto length =3 ?
输入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我尝试使用以下代码 -
<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>
我错过了一些东西,我想在上面的xslt代码中是level = 1和length = 3。
答案 0 :(得分:1)
您的XSLT定义了名为var:DemoName2
和var:DemoValue2
的变量,但在您的xsl:if
语句中,您要测试$var:varName2
并使用$var:varValue2
。
我认为你不必担心在这里使用变量。您可以将代码简化为此....
<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>