2016-08-29 2 views
0

Silverlight 5からSystem.Xml.Xpathへの参照を追加しましたが、HTMLドキュメントから特定のクラスへのリンクを取得しようとすると、 :HtmlAgilityPackでXPATHを使用すると、オブジェクト参照がオブジェクトのインスタンスに設定されない

追加情報:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

マイコード:

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

エラーの原因を教えてください。 SelectNodesが実際に何かを返すかチェックしましたか? –

+0

@the_lotus、エラーは 'SelectNodes'で発生します。何も返さない – ali

+1

Silverlight 5プログラムを作成する場合は、Silverlight 5 System.Xml.Xpathを使用する必要があります。それ以外の場合は、通常のSystem.Xmlアセンブリで動作します。 –

答えて

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を取得して解析する必要があります。

関連する問題