Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.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# 按类名搜索HTML XPath_C#_Html_Asp.net_Xpath_Html Agility Pack - Fatal编程技术网

C# 按类名搜索HTML XPath

C# 按类名搜索HTML XPath,c#,html,asp.net,xpath,html-agility-pack,C#,Html,Asp.net,Xpath,Html Agility Pack,我在c# 我想找到具有此结构的所有元素 我有10个链接,它们都有这样的结构: <div class="PartialSearchResults-item" data-zen="true"> <div class="PartialSearchResults-item-title"> <a class="PartialSearchResults-item-title-link result-link"target="_blank" href='https://www.g

我在c#
我想找到具有此结构的所有元素
我有10个链接,它们都有这样的结构:

<div class="PartialSearchResults-item" data-zen="true">
<div class="PartialSearchResults-item-title">
<a class="PartialSearchResults-item-title-link result-link"target="_blank" href='https://www.google.com/'> Google</a>
    </div>
<p class="PartialSearchResults-item-url">www.google.com</p>
<p class="PartialSearchResults-item-abstract">Search the world.</p>
   </div>

但是我得到了一个错误null reference

问题在于您在查询中得到了
标题。您正在查找div,它的
属性包含
PartialSearchResults项
,它是项目的根节点。但也有其他节点满足您的查询,例如类为
PartialSearchResults item title
的div也满足您的查询。然后,在选择这两个div之后,您将对它们进行迭代,并尝试获取总和子节点,对于第一次迭代,您的代码将运行良好,因为您有正确的节点,但在第二次迭代中,您有一个节点,该节点具有class
PartialSearchResults item title
,其中只有一个
a
,因此,在查询描述时,您将在第二次迭代中获得
NullReferenceException
,因为您试图获取
null
对象的
InnerText
属性的值

string description = node.SelectSingleNode(".//*[contains(@class,'PartialSearchResults-item-abstract')]").InnerText;
我建议不要使用
contains
。在您的情况下,根节点只有一个class
PartialSearchResults项
,因此您可以这样查询它

var titles = hd.DocumentNode.SelectNodes("//div[@class='PartialSearchResults-item']");

您的解决方案是正确的,但我也陷入了同样的困境,在我的例子中,使用类名
PartialSearchResults item
(例如),我还有其他类。因此,无法使用
var titles=hd.DocumentNode.SelectNodes(“//div[@class='PartialSearchResults-item']”)获得结果为了使用这种语法,我需要给每个类名加上不固定的名称。
var titles = hd.DocumentNode.SelectNodes("//div[@class='PartialSearchResults-item']");