gpt4 book ai didi

c#-4.0 - C#/Html 敏捷包错误 "Value cannot be null. Parameter name: Source."

转载 作者:行者123 更新时间:2023-12-01 22:42:35 24 4
gpt4 key购买 nike

我以前使用过 html agility pack,经过一些反复试验,取得了不错的效果。我目前正在尝试使用它来返回一个节点集,其中包含我通过在 Firefox 中右键单击“复制 XPath”获得的 xpath。我做了一些搜索,发现浏览器通常会为表格标签添加“tbody”。我试过删除它但没有运气。这是 Firefox 给我的 xpath:

/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]

按原样使用它会引发错误:“值不能为空。参数名称:源。

这在线发生:

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();

我会继续阅读,与此同时,如果这对任何人来说都是一个简单的修复,我将不胜感激。

更新:这是实际的代码:

protected override List<IDataPoint> ReturnDataPointsFromIndividualAddressString(string AddressString)
{
List<IDataPoint> earningsAnnouncements = new List<IDataPoint>(); //Not used, yet..

HtmlWeb hwObject = new HtmlWeb();
HtmlDocument htmlDoc = hwObject.Load(AddressString);

if (htmlDoc.DocumentNode != null)
{
List<HtmlNode> nodeList = new List<HtmlNode>();
nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();
}
}

最佳答案

似乎这个错误发生在这一行:

nodeList = htmlDoc.DocumentNode.SelectNodes("/html/body/p[3]/table/tbody/tr/td/table/tbody/tr[3]").ToList();

问题是,如果 SelectNodes 方法没有通过传递的 xpath 表达式找到节点,它会返回 null。您可以在 this answer 中找到更多信息类似的问题 HTML Agility Pack Null Reference。然后您在 null 对象上调用 ToList() 方法,这实际上会导致 NullReferenceException

要避免这种情况,请像这样检查 this 变量是否为 null:

var nodes = htmlDoc.DocumentNode.SelectNodes(...);
if (nodes != null)
{
nodeList = nodes.ToList();
}

关于c#-4.0 - C#/Html 敏捷包错误 "Value cannot be null. Parameter name: Source.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com