2013-10-01 17 views
1

如何在Java中獲取相同路徑的元素數?即:Java:XPath獲取相同路徑的元素數

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

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

是否有任何表達式給出了像count這樣的元素數(「/ html/body/div [1] /表[1]/tr [2]「),它會返回3?如果沒有任何辦法,我可以在Java中編寫自己的幫助器方法嗎?

+0

「XPath」表達式是否返回一個'NodeList'或者其他你可以調用'size()','getLength()'等的類? –

+0

我真的很想知道同樣的事情。我搜查了但沒有找到任何方式/練習。 – OguzOzkeroglu

+1

爲什麼不使用xpath自身的count()函數? –

回答

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]所有TD在表1的:6

+0

謝謝。我之前沒有看到「count()」。 – OguzOzkeroglu