有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

xml Java:XPath获取同一路径上的元素计数

在Java中,如何获得同一路径上的元素计数?i、 e:

<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->;返回"Title is here"
  • /html/body/div[1]/table[1]/tr[2]/td[3]->;返回33
  • /html/body/div[2]/table/tr/td->;返回11111

但是在任何tr中有n个td,或者在任何表格中有m个tr,或者在一个文档中有许多表格。。等等

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


共 (1) 个答案

  1. # 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] All of the td's: 13

    [xslt] All of the td's in table1: 6