使用XPath测试当前节点

时间:2018-10-29 21:58:15

标签: c# .net xml xpath

.NET的XPath函数提供了诸如SelectSingleNodeSelectNodes之类的常用功能。他们只能仅找到XPath查询指定的子节点

但是,如果我想测试当前节点是否符合给定的XPath规范,该怎么办?如何运作?

假设我有一个HTML文档,在其中找到了一个table节点。

<table>
  <tr>
    <td>...</td>
  <tr>
  <tr class="abc">
    <td>...</td>
  </tr>
</table>

我可以从那里找到所有tr个元素。一旦到达tr元素(我也可以通过导航而不是XPath到达那里),我想知道它是否符合某些条件。最好将它们指定为XPath字符串。

这就是我要寻找的:

XmlNode trNode = ...;
bool result = trNode.Matches("tr[@class='abc']");

.NET的(非常有限的)XPath功能支持吗?或者,如果有所不同,请使用 HtmlAgilityPack 软件包?

1 个答案:

答案 0 :(得分:1)

  

[...]如果我要测试当前节点是否与给定的XPath规范匹配,怎么办?

您可以使用self::轴进行确认。
因此,如果您当前的节点是tr,并且您想检查当前的tr元素是否是具有值为class的{​​{1}}属性的元素,请使用以下XPath表达式:

abc

我想这就是您想要的,不是吗?