首页 > 解决方案 > 使用 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包?

标签: c#.netxmlxpath

解决方案


[...] 如果我想测试当前节点是否符合给定的 XPath 规范怎么办?

您可以使用self::轴进行检查。
因此,如果您的当前节点是tr并且您想检查当前tr元素是否是一个具有classvalue 属性的元素abc,请使用以下 XPath 表达式:

self::tr[@class='abc']

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


推荐阅读