.NET 的 XPath 函数提供了常用的功能,例如 SelectSingleNode
和 SelectNodes
。它们只能找到由 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/