我可以在.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#应用程序中工作?
答案 0 :(得分:0)
我进行了更多搜索,发现:HtmlAgilityPack produces missing closing tags in OuterHtml
HTMLAgilityPack似乎在解析标签时遇到了问题,该标签删除了结束标签。我已经将HTMLAgilityPack版本更新为最新版本,并且现在可以正常使用。