如果类名未知,如何获取元素?

时间:2016-09-26 14:36:03

标签: c# xpath html-agility-pack

我有一个HTML文档,其中有一个表包含可能有或没有类的行,例如:

<tr class="">
  <th>Name</th>
  <td class="row-text">Myname</td>
</tr>

在上面的示例中,该行没有类。但是我需要获取列值(即MyName)。这些行中唯一唯一的值是标头标记。

有没有办法使用XPath按标头值获取正确的行?

2 个答案:

答案 0 :(得分:3)

是的,你可以使用following-sibling axis

来完成
//th[. = 'Name']/following-sibling::td

或者,通过tr父元素:

//tr[th = 'Name']/td

答案 1 :(得分:1)

@alecxe回答是对的。我会添加其他类似的替代方案:

这个查找tr的所有th,其'Name'包含td 子串(如果有多个元素包含文字'将'作为其内容的一部分命名,也将被选中);并在tr

中选择//tr[contains(th, 'Name')]/td
th

这个是相似的,但只提供完全匹配的元素,并且还会处理规范化空格,这很有用,因为有时完全匹配是找不到,因为在文本之前可能有空格或换行符阻止完全匹配。它找到..移动到父级(td),最后移动到//th[normalize-space(text()) = 'Name']/../td

$x("some/xpath")

请记住,您可以使用Chrome和Firefox控制台中的$("some css")功能来检查xpath;类似于CSS选择器的awk