私はこの小さな問題を整理するのに多くの時間を費やしました。エラーをスローする正確な手順に問題を絞り込みました。はい、Google を使用したことがあります。賢者が「Google を検索」と答える前に、それを投げ出してしまいましょう。
とにかく、ここに:
Try
Dim tempSource as String = Nothing
Console.WriteLine("Loading document...")
Dim FILE_NAME As String = "C:\pathto\file.txt"
If System.IO.File.Exists(FILE_NAME) = True Then
Dim objReader As New System.IO.StreamReader(FILE_NAME)
tempSource = objReader.ReadToEnd
objReader.Close()
Console.WriteLine("Loaded the document!")
Else
Console.WriteLine("Error loading document!")
MsgBox("Error loading document!")
Exit Sub
End If
Dim doc As HtmlDocument = Nothing
If tempSource IsNot Nothing Then
Console.WriteLine("Temp Source was not nothing, so loading HAP doc")
doc.Load(tempSource) '<--- This is where the error is!!!!!
Console.WriteLine("HAP doc loaded!")
Else
Console.WriteLine("Error: Unable to load source file into parser!")
MsgBox("Error: Unable to load source file into parser!")
Exit Sub
End If
Console.WriteLine("Document loaded!")
Console.WriteLine("Processing...")
For Each node As HtmlNode In doc.DocumentNode.Elements("//site")
'my code to process each element here
'not important because my app doesnt get this far lol
Next
Catch ex as Exception
Console.Writeline("Caught Exception: {0}", ex.Message)
End Try
約 1100 行を含むテキスト ファイルを読み込んでおり、各行は HTML Agility Pack で処理されます。私が知る限り、「doc.loadhtml(richtextbox1)」を実行すると、エラーがスローされます。また、ファイルを文字列にロードし、文字列を「doc.loadhtml(thestring)」でロードしようとしました。違いはありませんが、それでもエラーが発生します。
以下は、各行がどのように見えるかのサンプルです。
<Site Index="" Name="" Group="" PR="" />
<Site Index="" Name="" Group="" PR="" />
<Site Index="" Name="" Group="" PR="" />
<Site Index="" Name="" Group="" PR="" />
<Site Index="" Name="" Group="" PR="" />
<Site Index="" Name="" Group="" PR="" />
私は HTML Agility Pack を使用していますが、上記はすべての行にあるもので、約 1100 行です。テスト用に、1100 行のファイルをロードする前に、約 50 行の小さなテキスト ファイルを用意しています ;) HTML、HEAD、または BODY タグはありません。それらは私の解析には必要ありません。要素を簡単に解析できる HTML Agility Pack を使用しています。各行から各値を簡単に取得できます。
エラーが技術的に HTML ではないためかどうかはわかりません。ロードされたコードには HTML または BODY タグがないため、エラーになるということですか? この質問を投稿したかったのですが、いくつかの回答を待っている間、ドキュメントを別の方法で解析します。契約内容と、HTML Agility Pack が機能しない理由が気になります。私自身の学習と知識のために、何よりも概念の証明です。
これが私が得るエラーです(ところで、doc.load()行で、例外がスローされる場所です):
Object reference not set to an instance of an object
最後の注意: ルーチンはバックグラウンド スレッドにあります。以前にマルチスレッドを使用したことがあり、コードのより深い部分にデリゲートを作成しました。たぶん私は何かを見落としているだけかもしれませんが、昨夜の午前3時くらいにほとんどのコードを書きました笑。