2
private void button1_Click(object sender, EventArgs e)
{
    string url = urlTextBox.Text;
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream());
    richTextBox1.Text = sr.ReadToEnd();
    webBrowser1.DocumentText = richTextBox1.Text;
    HtmlElement htmlElement = webBrowser1.Document.GetElementById("name");
    string data = htmlElement.InnerText;
    label1.Text = data;
    sr.Close();
}

我想在 php 文件的 id 元素中读取一些文本,但是在这一行有点问题

string data = htmlElement.InnerText;

我从 Visual Studio 2010 收到了一些警告

NullReferenceExpection 是未处理
的对象引用未设置为对象的实例。

有人可以帮我吗?谢谢 :)

4

2 回答 2

2

我相信这里的问题可能是控件异步WebBrowser加载文档。因此,当您尝试立即访问时,事情就会出错。webBrowser1.Document

DocumentText来自MSDN的属性:

如果设置此属性的值,然后立即再次检索它,如果 WebBrowser 控件没有时间加载新内容,则检索到的值可能与设置的值不同。您可以在 DocumentCompleted 事件处理程序中检索新值。或者,您可以通过在循环中调用 Thread.Sleep 方法来阻止线程直到加载文档,直到 DocumentText 属性返回您最初设置的值。

另请参阅DocumentCompleted事件。

于 2012-06-24T17:30:58.920 回答
0

该方法很可能找不到 ID 为“name”的元素,因此变量 htmlElement 为空。检查您尝试获取的网站是否具有具有该 ID 的元素。

于 2012-06-24T17:28:04.790 回答