c# - 使用 XPath 测试当前节点

标签 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 包?

最佳答案

[...] what if I want to test the current node whether it matches a given XPath specification?

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

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

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

关于c# - 使用 XPath 测试当前节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53054462/

相关文章:

c# - select() 用于 C# 中的多个文件 I/O?

c# - 禁用窗体双击时的最大化/最小化

c# - 正则表达式需要识别句子之间没有空格的地方

.net - 单点登录服务器/页面

c# - 将 XML 反序列化为列表<>

c# - 将 .NET 应用程序转换为 x86 native 代码

c# - 如何使用字符串参数来区分 namespace 或类型?

javascript - 在 PHP 中读取 KML 文件,将其强制写入一行,然后使用 Google map 的 parseKMLString 对其进行解析

sql-server - MSSQL XML 性能问题

android - 仅在一个 fragment 中隐藏状态栏并在其他 fragment 中显示