Практическое руководство. Доступ к исходному коду HTML с использованием управляемой объектной модели документов HTML

Обновлен: Ноябрь 2007

Свойства DocumentStream и DocumentText элемента управления WebBrowser возвращают HTML-код текущего документа в том виде, в каком он существовал при первом отображении. Однако если изменить страницу с помощью вызовов методов и свойств, таких как AppendChild и InnerHtml, эти изменения не будут отображаться при вызове DocumentStream и DocumentText. Для получения наиболее свежего HTML-кода для DOM необходимо вызвать свойство OuterHtml элемента HTML.

Следующая процедура демонстрирует извлечение динамического исходного кода и отображение его в отдельном контекстном меню.

Извлечение динамического исходного кода с помощью свойства OuterHtml

  1. Создайте новое приложение Windows Forms. Создайте одну форму Form, назовите ее Form1.

  2. Разместите элемент управления WebBrowser в приложении Windows Forms и назовите его WebBrowser1. Дополнительные сведения см. в разделе Практическое руководство. Добавление функциональности веб-обозревателя в приложения Windows Forms.

  3. Создайте вторую форму Form в приложении и назовите ее CodeForm.

  4. Добавьте элемент управления RichTextBox в форму CodeForm и установите свойству Dock значение Fill.

  5. Создайте в форме CodeForm открытое свойство под названием Code.

    Public Property Code() As String
        Get
            If (RichTextBox1.Text IsNot Nothing) Then
                Code = RichTextBox1.Text
            Else
                Code = ""
            End If
        End Get
    
        Set(ByVal value As String)
            RichTextBox1.Text = value
        End Set
    End Property
    
         public string Code
            {
                get
                {
                    if (richTextBox1.Text != null)
                    {
                        return (richTextBox1.Text);
                    }
                    else
                    {
                        return ("");
                    }
                }
                set
                {
                    richTextBox1.Text = value;
                }
            }
    
  6. Добавьте элемент управления Button с названием Button1 в форму Form и следите за событием Click. Сведения об отслеживании событий см. в разделе Прием событий.

  7. В обработчик событий Click добавьте следующий код.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim elem As HtmlElement
    
        If (WebBrowser1.Document IsNot Nothing) Then
            Dim cf As New CodeForm()
            Dim elems As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("HTML")
            If (elems.Count = 1) Then
                elem = elems(0)
                cf.Code = elem.OuterHtml
                cf.Show()
            End If
        End If
    End Sub
    
         private void button1_Click(object sender, EventArgs e)
            {
                HtmlElement elem;
    
                if (webBrowser1.Document != null)
                {
                    CodeForm cf = new CodeForm();
                    HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("HTML");
                    if (elems.Count == 1)
                    {
                        elem = elems[0];
                        cf.Code = elem.OuterHtml;
                        cf.Show();
                    }
                }
            }
    

Отказоустойчивость

Всегда проверяйте значение Document перед тем, как пытаться извлечь его. Если загрузка текущей страницы не завершена, Document или один из его дочерних объектов может не инициализироваться.

См. также

Ссылки

Общие сведения об элементе управления WebBrowser

Другие ресурсы

Использование управляемой объектной модели HTML-документов