Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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 Agility Pack为存在的项提供NullReferenceException_C#_.net Core_Html Agility Pack_Nullreferenceexception - Fatal编程技术网

C# Html Agility Pack为存在的项提供NullReferenceException

C# Html Agility Pack为存在的项提供NullReferenceException,c#,.net-core,html-agility-pack,nullreferenceexception,C#,.net Core,Html Agility Pack,Nullreferenceexception,我刚刚开始,但我正在努力解决它,为我知道存在事实的项目抛出NullReferenceException 例如,以以下代码为例: doc.DocumentNode.Descendants("div").ToList()[2] 这将返回一个有效的HtmlNode,我可以在该节点上执行node.Attributes[“id”],并获取id属性的值(在本例中为“somevalue”) 但是,如果我尝试基于属性值获取此特定元素,我会得到一个NullReferenceException: doc.Docu

我刚刚开始,但我正在努力解决它,为我知道存在事实的项目抛出
NullReferenceException

例如,以以下代码为例:

doc.DocumentNode.Descendants("div").ToList()[2]
这将返回一个有效的
HtmlNode
,我可以在该节点上执行
node.Attributes[“id”]
,并获取
id
属性的值(在本例中为“somevalue”)

但是,如果我尝试基于属性值获取此特定元素,我会得到一个
NullReferenceException

doc.DocumentNode.Descendants("div").FirstOrDefault(e => e.Attributes["id"].Value == "somevalue")

当具有此属性和此值的元素实际存在时,为什么此代码会抛出
NullReferenceException

能否提供xml文件?因为至少有一个后代
div
没有id属性。@HereticMonkey这肯定可以解释它。如果不能保证所有子节点都具有此属性,如何基于属性值选择子节点?请首先检查该属性是否存在。我不知道Html Agility Pack,但您可以使用(也称为null条件运算符)执行
e=>e.Attributes[“id”]?.Value==“somevalue”
,以确保找到它。请参阅xpath查询可以是
//div/@id[不是(.=“”)]