如何获得所需的节点,而不是xpath中的所有节点

问题描述:

<table> 
<tr> <th> colspan=3 **pencils** </th> </tr> 
<tr> <td> camelin </td></tr> 
<tr> <td> upsara </td></tr> 
<tr> <th> colspan=3 **subjects** </th> </tr> 
<tr> <td> Maths </td></tr> 
<tr> <td> Physics </td></tr> 
<tr> <td> Chemistry </td></tr> 
<tr> <th> colspan=3 **books** </th></tr> 

如果节点tr包含铅笔,那么我想要下面的tr节点包含camelin和upsara。但是我将所有camelin,upsara,数学,物理结合在一起。如何获得所需的节点,而不是xpath中的所有节点

同样,如果tr包含科目,那么我想要下面的节点包含数学物理和化学。 我想要铅笔后的文本我的意思是接下来的两个节点与铅笔信息有关。 我想通过检查其中的条件来检查colspans之间的文本。还有一件事是计数是动态的而不是静态的。

+1

你想获得TH之间的所有TD吗?请多说明一下逻辑。 你想在**铅笔**之后但是在下一个TH之前(**主题**)获得数值吗? –

试试这个。 它返回铅笔或科目后的前2个TD元素。

/table/tr[contains(th/text(), 'pencils')]/following-sibling::tr[position()<3]/td/text() 
/table/tr[contains(th/text(), 'subjects')]/following-sibling::tr[position()<3]/td/text()