想知道是否有人可以给我一些方向。我花了相当多的时间在上面,似乎没有任何进展:
我有一个隐藏的字段,我正在尝试从VB.Net中的HTML文档中解析。我在WPF应用程序中使用System.Windows.Controls.WebBrowser控件并处理LoadCompleted事件。在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"/>
问题是这个allElements.tags("hidField")
返回null。我是否在使用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
答案 0 :(得分:1)
您需要查找呈现的标记,而不是服务器端值。
这将呈现为<input type="hidden">
,因此您需要使用allElements.tags("input")
,然后找到特定的隐藏版本。 id
属性可能不会以hidField
结尾 - 这取决于它所处的容器控制以及嵌套级别。
我建议使用HTML Agilty Pack来解析HTML并找到元素 - 它应该比MSHTML更容易使用。
答案 1 :(得分:0)
自从我使用MSHTML以来已经有一段时间了,但如果我没记错的话,你需要使用像
htmlDocument.getElementById('hidField')