当前位置: 首页 > 编程语言 > C#

HtmlAgilityPack中的NullReferenceException分享

时间:2023-04-11 11:31:47 C#

HtmlAgilityPack中的NullReferenceException我正在尝试提取链接字符串url="http://www.album-cover-art.org/search.php?q=Ruin+-+Live+Album+Version+Lamb+of+God”我的代码:HtmlAgilityPack.HtmlWebweb=newHtmlAgilityPack.HtmlWeb();HtmlAgilityPack.HtmlDocumenthtmlDoc=newHtmlAgilityPack.HtmlDocument();htmlDoc=web.Load(url);//这里第23行产生异常如果(linkNode!=null)Console.WriteLine(linkNode.InnerText);上面的代码编译得很好,但是当我尝试运行它时,它会产生异常UnhandledException:System.NullReferenceException:Objectreferencenotsettoaninstanceofanobject。完整堆栈跟踪System.NullReferenceException:未将对象引用设置为对象的实例。在C:SourcehtmlagilitypackTrunkHtmlAg中的HtmlAgilityPack.HtmlDocument.ReadDocumentEncoding(HtmlNode节点)ilityPackHtmlDocument.cs:line1916atHtmlAgilityPack.HtmlDocument.PushNodeEnd(Int32index,Booleanclose)inC:SourcehtmlagilitypackTrunkHtmlAgilityPackHtmlDocument.cs:line1805atHtmlAgilityPack.HtmlDocument.Parse()inC:SourcehtmlagilitypackTrunkHtmlAgilityPackHtmlDocument.cs:line1468atHtmlAgilityPack.HtmlDocument.在C:SourcehtmlagilitypackTrunkHtmlAgilityPackHtmlDocument.cs中加载(TextReader阅读器):在HtmlAgilityPack.HtmlWeb.Get(Uriuri、字符串方法、字符串路径、HtmlDocument文档、IWebProxy代理、ICredentials信用)中的第769行在C:SourcehtmlagilitypackTrunkHtmlAgilityPackHtmlWeb.cs:在HtmlAgility中的1515行C:SourcehtmlagilitypackTrunkHtmlAgilityPackHtmlWeb.cs中的.HtmlWeb.LoadUrl(Uriuri、字符串方法、WebProxy代理、NetworkCredential信用):HtmlAgilityPack中的第1563行。C:SourcehtmlagilitypackTrunkHtmlAgilityPackHtmlWeb.cs中的第1563行。HtmlWeb.Load(字符串url、字符串方法):HtmlAgilityPack中的第114行C:Sourcehtml中的.HtmlWeb.Load(Stringurl)agilitypackTrunkHtmlAgilityPackHtmlWeb.cs:line1107atScreenScrapping.Program.Main(String[]args)inc:UsersranveercsharpScreenScrappingScreenScrappingProgram.cs:line23所以,我的问题是为什么我会收到这个异常这是HtmlAgilityPack中的一个错误。您尝试解析的文档有一个编码名称,AgilityPack无法解析其中的字符集值(iso-utf-8)。正如SimonMourier所说,这是1.4.0.0中引入的错误。为了避免这种情况,手动从流中加载文档,手动设置编码,如下:以上就是C#学习教程的全部内容:HtmlAgilityPack中的NullReferenceException,如果对大家有用还需要进一步了解C#的我希望您多多关注教程—varhtmlDoc=newHtmlDocument();htmlDoc.OptionReadEncoding=false;varrequest=(HttpWebRequest)WebRequest.Create(url);request.Method="GET";使用(varresponse=(HttpWebResponse)request.GetResponse()){使用(varstream=response.GetResponseStream()){htmlDoc.Load(stream,Encoding.UTF8);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理会员删除。如需转载请注明出处: