簡體   English   中英

C#HTMLAgilityPack System.NullReferenceException

[英]C# HTMLAgilityPack System.NullReferenceException

我可以在.Net Fiddle中進行以下操作: https : //dotnetfiddle.net/Xd8pO1

using HtmlAgilityPack;
using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var html =
        "<select class=\"vui-input d2l-select\" name=\"roleid\" id=\"z_d\" title=\"Role\"><option value=\"0\" selected=\"selected\">-- Select a Role --<option value=\"104\">Instructor<option value=\"105\">Student<option value=\"106\">TA 1<option value=\"107\">TA 2<option value=\"108\">TA 3<option value=\"109\">TA 4<option value=\"114\">TA 5<option value=\"115\">TA 6<option value=\"111\">Course Developer</select>";

        var htmlDoc = new HtmlDocument();
        htmlDoc.LoadHtml(html);

        string name = htmlDoc.DocumentNode
                        .SelectNodes("//*[text()[contains(., 'Instructor')]]").First().Attributes["value"].Value;

        Console.WriteLine(name);
    }
}

但是,當我嘗試在.Net應用程序或新的控制台應用程序中運行它時,它不起作用。

我收到以下錯誤:

System.NullReferenceException
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.
  Source=DELETE
  StackTrace:
   at Program.Main() in E:\...........:line 18

我已進行測試以確保源格式正確。 用以下工作代替第18行:

string name = `htmlDoc.DocumentNode.SelectNodes("//select/option[@value=104]")
.First()
.Attributes["value"].Value;`

有什么想法為什么這可以在.Net Fiddle中工作,但不能在Visual Studio中的c#應用程序中工作?

我進行了更多搜索,發現了這一點: HtmlAgilityPack在OuterHtml中產生丟失的結束標記

看起來HTMLAgilityPack在解析標記時遇到了問題,該標記刪除了結束標記。 我已經將我的HTMLAgilityPack版本更新為最新版本,並且現在可以正常使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM