2013-10-01 1 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,

  • /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

но есть п td в любой tr, или есть m tr в любой таблице или есть много таблиц в документе .. и т. д.

Есть ли какое-либо выражение, которое дает мне количество элементов, например count ("/ html/body/div [1]/table [1]/tr [2] "), и он вернет 3? Если это не так, могу ли я написать свой собственный вспомогательный метод в Java?

+0

Не выражает ли выражение 'XPath'' NodeList' или что-то вроде того, что вы можете назвать 'size()', 'getLength()' и т. Д.? –

+0

Мне действительно интересно то же самое. Я искал и не нашел никакого способа/практики. – OguzOzkeroglu

+1

Почему бы не использовать 'count()' функцию самого xpath? –

ответ

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] Все из ТД: 13

[XSLT] Все из ТД в table1 : 6

+0

Спасибо. Я раньше не видел 'count()'. – OguzOzkeroglu

Смежные вопросы