誰かが私にこの方向を教えてくれるのだろうかと思っていました。私はそれにかなりの時間を費やして、どこにでもいるように見えない:VB.NetでMSHTMLを使用してHTMLを解析する
私はVB.NetのHTML文書を解析しようとしている隠しフィールドがあります。 WPFアプリケーションでSystem.Windows.Controls.WebBrowserコントロールを使用して、LoadCompletedイベントを処理しています。
Dim htmlDocument As mshtml.IHTMLDocument2 = Me.WebBrowser.Document
Dim allElements As mshtml.IHTMLElementCollection = htmlDocument.body.all
Dim hiddenField As mshtml.IHTMLInputElement = allElements.tags("hidField")
私がアクセスしようとしている隠しフィールドのような私の.aspxファイルで宣言されています:
<asp:HiddenField runat="server" ID="hidField"/>
問題はこのことですLoadCompletedイベントハンドラ内で、私はこのような何かをallElements.tags("hidField")
がnullを返しています。 mshtmlライブラリに何か問題がありますか?私はそれについて多くの経験を持っておらず、私の隠されたフィールド要素を見つけるためにこのようなことをする必要があることを集めました。あなたがより多くの情報を必要とするかどうか私に教えてください。事前に助けてくれてありがとう。
EDIT
ここだが興味を持つ人のための私の最終作業溶液である:私はMSHTMLを使用するので
Dim htmlDocument As mshtml.IHTMLDocument2 = Me.WebBrowser.Document
Dim allElements As mshtml.IHTMLElementCollection = htmlDocument.body.all
Dim allInputs As mshtml.IHTMLElementCollection = allElements.tags("input")
For Each element As mshtml.IHTMLInputElement In allInputs
If element.type = "hidden" And element.name.Contains("hidField") Then
MessageBox.Show(element.value)
End If
Next
これは意味があります。私はあなたが提案したことをやって、私が推測しているその行の例外を得るのをやめたのは、私がMSHTMLを正しく実行していないことです: 'System .__ ComObject'タイプのCOMオブジェクトをインターフェイスタイプ 'mshtml.IHTMLInputElement '次のエラーのため、IID '{3050F5D2-98B5-11CF-BB82-00AA00BDCE0B}'のインターフェイスのCOMコンポーネントのQueryInterface呼び出しが失敗したため、この操作は失敗しました:このようなインターフェイスはサポートされていません(HRESULT:0x80004002(E_NOINTERFACE)例外) 。 – Tom
私はHTMLアジリティパックに試してみるかもしれません。 – Tom