我在这个网站上找不到确切的问题。 页面上的html包含许多元素,其中一些包含标题单元格“tr”,一些实际数据单元格为“td”
以下是一个例子:
<tr align="center">
<th width="63"><b> </b></th>
<th width="293"><b>Partners</b></th>
<th width="54"><b>Score</b></th>
<th width="184"><b>Type of Partner</b></th>
</tr>
<tr>
<td> </td>
<td height="17">Acme trucking</td>
<td align="center">0.75</td>
<td>Truck Carrier</td>
</tr>
我需要找到只包含“td”元素的所有“tr”元素,换句话说,排除所有包含“th”元素的元素
我还希望有更具体的xpath表达式,它只能找到包含4个“td”子元素的“tr”元素。
如果你只能为只有“td”的trs提供2个单独的xpath表达式 还有一个“tr”,它有4“td”,我真的很感激。
答案 0 :(得分:4)
//tr[td and count(td) = count(*)]
或//tr[td and not(*[not(self::td)])]
//tr[count(td) = 4 and count(td) = count(*)]
如果您只需要tr
td
且没有文字,例如:
<root>
<tr>
Text here
<td></td>
</tr>
</root>
假设它无效tr
,您可以使用:
//tr[td and count(td) = count(*) and not(normalize-space(text()))]
它只允许空格。
答案 1 :(得分:1)
我需要找到只包含“td”元素的所有“tr”元素,换句话说,排除所有包含“th”元素的元素
//tr[not(th)]
我还希望有更具体的xpath表达式,它只能找到包含4个“td”子元素的“tr”元素。
//tr[count(td) = 4]
这假设任何一个tr
都不会同时拥有td
和th
个孩子。