htmlagility pack не может получить локальную страницу - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь запустить следующий код:

 public void Init(Url rootUrl)
        {
             var web = new HtmlWeb();
            this.doc = web.Load(rootUrl.Value);
        }

со следующим параметром:

{<System.Security.Policy.Url version="1">
<Url>http://localhost:85/HCM/HCM.html</Url>
</System.Security.Policy.Url>
}

и получите следующее исключение: Object reference not set to an instance of an object.

Трассировка стека:

   at HtmlAgilityPack.HtmlDocument.ReadDocumentEncoding(HtmlNode node) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 1916
   at HtmlAgilityPack.HtmlDocument.PushNodeEnd(Int32 index, Boolean close) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 1805
   at HtmlAgilityPack.HtmlDocument.Parse() in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 1492
   at HtmlAgilityPack.HtmlDocument.Load(TextReader reader) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 769
   at HtmlAgilityPack.HtmlDocument.Load(Stream stream, Boolean detectEncodingFromByteOrderMarks) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 597
   at HtmlAgilityPack.HtmlWeb.Get(Uri uri, String method, String path, HtmlDocument doc, IWebProxy proxy, ICredentials creds) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1515
   at HtmlAgilityPack.HtmlWeb.LoadUrl(Uri uri, String method, WebProxy proxy, NetworkCredential creds) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1563
   at HtmlAgilityPack.HtmlWeb.Load(String url, String method) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1152
   at HtmlAgilityPack.HtmlWeb.Load(String url) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1107
   at Conduit.CPServices.Logic.HtmlContentMonitor.HtmlAgilityPackHtmlProvider.Init(Url rootUrl) in D:\Conduit\RnD\Server\Services\CP\CPServices\Logic\HtmlContentMonitor\Conduit.CPServices.Logic.HtmlContentMonitor\HtmlAgilityPackHtmlProvider.cs:line 22
   at Conduit.CPServices.Logic.HtmlContentMonitor.HtmlContentManager.FetchRootAndExternlContentAsByteArray(Url rootUrl) in D:\Conduit\RnD\Server\Services\CP\CPServices\Logic\HtmlContentMonitor\Conduit.CPServices.Logic.HtmlContentMonitor\HtmlContentManager.cs:line 112

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Это ошибка в HtmlAgilityPack, которая может быть обнаружена, например, если кодировка документа, установленная через тег <META>, недействительна (например, <META http-equiv="Content-Type" content="text/html; charset=8859-9">). Как сказал Саймон Мурье , это ошибка, появившаяся в 1.4.0.0.

См. Ответ на похожую ошибку: Внутренние компоненты HAL пытаются получить подходящую кодировку для этой строки, используя что-то вроде Encoding.GetEncoding("8859-9"), и это выдает ошибку .

Чтобы избежать этого, установите кодировку вручную, например ::

.
web.Load(rootUrl.Value, Encoding.GetEncoding("iso-8859-9"));
0 голосов
/ 21 марта 2012

Вероятно, это ошибка в HtmlAgilityPack, и, вероятно, это связано с HTML-кодом, содержащимся в вашем документе.

Можно ли опубликовать HTML-код, проанализированный с помощью HtmlAgilityPack?

...