C# 类名未知时如何获取元素?
我有一个HTML文档,其中有一个表,其中包含可能有或可能没有类的行,例如:C# 类名未知时如何获取元素?,c#,xpath,html-agility-pack,C#,Xpath,Html Agility Pack,我有一个HTML文档,其中有一个表,其中包含可能有或可能没有类的行,例如: <tr class=""> <th>Name</th> <td class="row-text">Myname</td> </tr> 名称 我的名字 在上面的示例中,行没有类。但是,我需要获取列值(即,MyName)。此类行中唯一唯一的唯一值是header标记 有没有一种方法可以使用XPath按标题获取正确的行值?是的,您可以使用以下方
<tr class="">
<th>Name</th>
<td class="row-text">Myname</td>
</tr>
名称
我的名字
在上面的示例中,行没有类。但是,我需要获取列值(即,MyName
)。此类行中唯一唯一的唯一值是header标记
有没有一种方法可以使用XPath按标题获取正确的行值?是的,您可以使用以下方法: 或者,通过
tr
父元素:
//tr[th = 'Name']/td
@答案是正确的。我想补充其他类似的备选方案: 这一个查找所有
tr
,其中th
包含'Name'
作为子字符串(如果有多个元素的内容中包含文本'Name',它们也将被选中);并在tr
//tr[contains(th, 'Name')]/td
另一个类似,但只为您提供具有精确匹配的元素,并且还负责规范化空白,这很有用,因为有时找不到精确匹配,因为文本前可能有空格或换行符阻止精确匹配。它发现th
移动到父级(。
),最后移动到td
//th[normalize-space(text()) = 'Name']/../td
请记住,您可以在Chrome和Firefox控制台中使用
$x(“some/xpath”)
函数来检查xpath;类似于css选择器的$(“一些css”)
。XPath可以像JavaScript中的JQuery那样利用css选择器吗?@Matt Yes,类似于“/*[包含(@class,'my_css_class')]”的东西。
//th[normalize-space(text()) = 'Name']/../td