虽然我已经从Silverlight 5中添加了对System.Xml.Xpath
的引用,但在尝试从HTML文档中获取某个类的链接时仍然会出现此错误:
附加信息:未将对象引用设置为对象的实例。
我的代码:
Dim doc As HtmlDocument = New HtmlDocument()
doc.LoadHtml(New Net.WebClient().DownloadString(sourceUrl))
For Each row As HtmlNode In doc.DocumentNode.SelectNodes("//a[@class='base-link']")
Console.Write(row.Name)
Next
如果我只做SelectNodes("//a")
,那么我不会收到任何错误。看起来像使用@class
时出现问题,但我不明白为什么
答案 0 :(得分:0)
发生异常是因为没有使用XPath查询选择节点。
您可以通过以下方式防范:
Option Infer On
' ... '
Dim myLinks = doc.DocumentNode.SelectNodes("//a[@class='base-link']")
If myLinks IsNot Nothing Then
For Each row In myLinks
Console.WriteLine(row.Name)
Next
End If
我建议您检查要加载的HTML以找出类名是什么。可能是类名由JavaScript生成,在这种情况下,您必须将页面加载到浏览器控件中并等待它完成处理,然后获取呈现的HTML并解析它。