Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用XPath测试当前节点_C#_.net_Xml_Xpath - Fatal编程技术网

C# 使用XPath测试当前节点

C# 使用XPath测试当前节点,c#,.net,xml,xpath,C#,.net,Xml,Xpath,.NET的XPath函数提供了常见的功能,如SelectSingleNode和SelectNodes。它们只能找到XPath查询指定的子节点 但是如果我想测试当前节点是否匹配给定的XPath规范,该怎么办?这是怎么回事 假设我有一个HTML文档,我在其中找到了一个表节点 <table> <tr> <td>...</td> <tr> <tr class="abc"> <td>...<

.NET的XPath函数提供了常见的功能,如
SelectSingleNode
SelectNodes
。它们只能找到XPath查询指定的子节点

但是如果我想测试当前节点是否匹配给定的XPath规范,该怎么办?这是怎么回事

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

<table>
  <tr>
    <td>...</td>
  <tr>
  <tr class="abc">
    <td>...</td>
  </tr>
</table>
NET(非常有限的)XPath功能是否支持这一点?或者,如果这有区别的话,HtmlAgilityPack

[…]如果我想测试当前节点是否匹配给定的XPath规范,该怎么办

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

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

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

为什么你不能选择这个
tr
节点,然后检查它是否为空?它总是空的,因为它不是它自己的子节点。你是什么意思?您可以选择子代,而不仅仅是子代:
//tr[@calss='abc']
元素既不是它自己的子代,也不是它的任何其他子代。它本身就是。
self::tr[@class='abc']