Java:XPath在同一路径上获取元素数

时间:2013-10-01 14:40:09

标签: java xml xpath

如何在Java中以相同路径获取元素数?即:

<html>
    <head>
        <title>Title is here</title>
    </head>
    <body>
        <div id="div1">
            <table id="table1">
                <tr>
                    <td>1</td>
                    <td>2</td>
                    <td>3</td>
                </tr>
                <tr>
                    <td>11</td>
                    <td>22</td>
                    <td>33</td>
                </tr>
            </table>
            <table id="table2">
                <tr>
                    <td>111</td>
                    <td>222</td>
                    <td>333</td>
                </tr>
                <tr>
                    <td>1111</td>
                    <td>2222</td>
                    <td>3333</td>
                </tr>
            </table>
        </div>
        <div id="div2">
            <table id="table3">
                <tr>
                    <td>11111</td>
                </tr>
            </table>
        </div>
    </body>
</html>

在这个html中,

  • /html/head/title - &gt;返回"Title is here"
  • /html/body/div[1]/table[1]/tr[2]/td[3] - &gt;返回33
  • /html/body/div[2]/table/tr/td - &gt;返回11111

但是在任何tr中都有n td,或者在任何表中都有m tr,或者文档中有很多表等等。

是否有任何表达式给我元素计数如count(“/ html / body / div [1] / table [1] / tr [2]”)并且它将返回3?如果没有任何方法,我可以用Java编写自己的帮助方法吗?

1 个答案:

答案 0 :(得分:1)

此XSLT:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:message>All of the td's: <xsl:value-of select="count(//td)"/> </xsl:message>
    <xsl:message>All of the td's in table1: <xsl:value-of select="count(//table[@id='table1']//td)"/></xsl:message>
  </xsl:template>
</xsl:stylesheet>

生成此输出:

  

[xslt]所有td:13

     

[xslt] table1:6中的所有td