Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2008/.NET Framework 3.5

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
HtmlDocument (Clase)

Actualización: noviembre 2007

Proporciona acceso mediante programación de nivel superior a un documento HTML hospedado por el control WebBrowser.

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
Visual Basic (Declaración)
<PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")> _
Public NotInheritable Class HtmlDocument
Visual Basic (Uso)
Dim instance As HtmlDocument
C#
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
public sealed class HtmlDocument
Visual C++
[PermissionSetAttribute(SecurityAction::LinkDemand, Name = L"FullTrust")]
public ref class HtmlDocument sealed
J#
/** @attribute PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust") */
public final class HtmlDocument
JScript
public final class HtmlDocument

HtmlDocument proporciona un contenedor administrado alrededor del objeto de documento de Internet Explorer, también conocido como el Modelo de objetos de documento (DOM) HTML. Obtiene una instancia de HtmlDocument a través de la propiedad Document del control WebBrowser.

Es posible anidar las etiquetas HTML dentro de un documento HTML. HtmlDocument representa entonces un árbol de documento cuyos elementos secundarios son instancias de la clase HtmlElement. En el ejemplo de código siguiente se muestra un archivo HTML simple.

<HTML>
    <BODY>
        <DIV name="Span1">Simple HTML Form</DIV>
        <FORM>
            <SPAN name="TextLabel">Enter Your Name:</SPAN>
            <INPUT type="text" size="20" name="Text1">
        </FORM>
    </BODY>
</HTML>

En este ejemplo, HtmlDocument representa todo el documento dentro de las etiquetas HTML. Los objetos HtmlElement individuales representan las etiquetas BODY, DIV, FORM y SPAN.

Hay varias formas de tener acceso a los elementos de este árbol. Utilice la propiedad Body para tener acceso a la etiqueta BODY y a todos sus elementos secundarios. La propiedad ActiveElement le da el HtmlElement para el elemento de una página HTML que tiene el foco de entrada de datos del usuario. Todos los elementos de una página HTML pueden tener un nombre; la colección All proporciona acceso a cada HtmlElement utilizando su nombre como un índice. GetElementsByTagName devolverá una colección HtmlElementCollection de todos los objetos HtmlElement que tengan un nombre de etiqueta HTML determinado, como DIV o TABLE. GetElementById devolverá el elemento HtmlElement único correspondiente al identificador único suministrado. GetElementFromPoint devolverá el elemento HtmlElement situado en la pantalla, en las coordenadas de puntero proporcionadas.

También puede utilizar las colecciones Forms y Images para recorrer en iteración elementos que representan formularios de entrada y gráficos, respectivamente.

HtmlDocument se basa en las interfaces no administradas implementadas por el DOM DHTML de Internet Explorer: IHTMLDocument, IHTMLDocument2, IHTMLDocument3 e IHTMLDocument4. HtmlDocument sólo expone las propiedades y los métodos utilizados con más frecuencia en estas interfaces no administradas. Puede tener acceso a todas las demás propiedades y métodos directamente utilizando la propiedad DomDocument, que puede convertir al puntero de interfaz no administrada deseado.

Un documento HTML puede contener marcos, que son las distintas ventanas que hay dentro del control WebBrowser. Cada marco muestra su propia página HTML. La colección Frames está disponible fuera de la propiedad Window. También puede utilizar la propiedad Window para cambiar el tamaño de la página mostrada, desplazarse por el documento o mostrar alertas y peticiones al usuario.

HtmlDocument expone los eventos más comunes que esperaría controlar al hospedar páginas HTML. En el caso de los eventos no expuestos directamente por la interfaz, puede agregar un controlador para el evento utilizando AttachEventHandler.

Los archivos HTML pueden contener etiquetas SCRIPT que encapsulan el código escrito en uno de los lenguajes Active Scripting, como JScript o VBScript. El método InvokeScript permite la ejecución de las propiedades y los métodos definidos en una etiqueta SCRIPT.

d9bt3dad.alert_note(es-es,VS.90).gifNota:

Si bien la mayoría de las propiedades, los métodos y los eventos de HtmlDocument han mantenido los mismos nombres que tienen en el DOM no administrado, algunos se han cambiado por coherencia con .NET Framework.

En el ejemplo de código siguiente se utilizan datos de la base de datos Northwind para crear dinámicamente una HTML TABLE mediante CreateElement. También se utiliza el método AppendChild, primero para agregar celdas (elementos TD) a filas (elementos TR), después para agregar filas a la tabla y, por último, para anexar la tabla al final del documento actual. El ejemplo de código requiere que su aplicación tenga un control WebBrowser denominado WebBrowser1.

Visual Basic
Private Sub DisplayCustomersTable()
    ' Initialize the database connection.
    Dim CustomerData As New DataSet()
    Dim CustomerTable As DataTable

    Try
        Dim DBConn As New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;")
        Dim DBQuery As New SqlDataAdapter("SELECT * FROM CUSTOMERS", DBConn)
        DBQuery.Fill(CustomerData)
    Catch dbEX As DataException

    End Try

    CustomerTable = CustomerData.Tables("Customers")

    If (Not (WebBrowser1.Document Is Nothing)) Then
        With WebBrowser1.Document
            Dim TableElem As HtmlElement = .CreateElement("TABLE")
            .Body.AppendChild(TableElem)

            Dim TableRow As HtmlElement

            ' Create the table header. 
            Dim TableHeader As HtmlElement = .CreateElement("THEAD")
            TableElem.AppendChild(TableHeader)
            TableRow = .CreateElement("TR")
            TableHeader.AppendChild(TableRow)

            Dim HeaderElem As HtmlElement
            For Each Col As DataColumn In CustomerTable.Columns
                HeaderElem = .CreateElement("TH")
                HeaderElem.InnerText = Col.ColumnName
                TableRow.AppendChild(HeaderElem)
            Next

            ' Create table rows.
            Dim TableBody As HtmlElement = .CreateElement("TBODY")
            TableElem.AppendChild(TableBody)
            For Each Row As DataRow In CustomerTable.Rows
                TableRow = .CreateElement("TR")
                TableBody.AppendChild(TableRow)
                For Each Col As DataColumn In CustomerTable.Columns
                    Dim Item As Object = Row(Col)
                    Dim TableCell As HtmlElement = .CreateElement("TD")
                    If Not (TypeOf (Item) Is DBNull) Then
                        TableCell.InnerText = CStr(Item)
                    End If
                    TableRow.AppendChild(TableCell)
                Next
            Next

        End With
    End If
End Sub
C#
private void DisplayCustomersTable()
{
    DataSet customersSet = new DataSet();
    DataTable customersTable = null;
    SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Customers", "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");
    sda.Fill(customersTable);
    customersTable = customersSet.Tables[0];

    if (webBrowser1.Document != null)
    {
        HtmlElement tableRow = null;
        HtmlElement headerElem = null;

        HtmlDocument doc = webBrowser1.Document;
        HtmlElement tableElem = doc.CreateElement("TABLE");
        doc.Body.AppendChild(tableElem);

        HtmlElement tableHeader = doc.CreateElement("THEAD");
        tableElem.AppendChild(tableHeader);
        tableRow = doc.CreateElement("TR");
        tableHeader.AppendChild(tableRow);

        foreach (DataColumn col in customersTable.Columns)
        {
            headerElem = doc.CreateElement("TH");
            headerElem.InnerText = col.ColumnName;
            tableRow.AppendChild(headerElem);
        }

        // Create table rows.
        HtmlElement tableBody = doc.CreateElement("TBODY");
        tableElem.AppendChild(tableBody);
        foreach (DataRow dr in customersTable.Rows)
        {
            tableRow = doc.CreateElement("TR");
            tableBody.AppendChild(tableRow);
            foreach (DataColumn col in customersTable.Columns)
            {
                Object dbCell = dr[col];
                HtmlElement tableCell = doc.CreateElement("TD");
                if (!(dbCell is DBNull))
                {
                    tableCell.InnerText = dbCell.ToString();
                }
                tableRow.AppendChild(tableCell);
            }
        }
    }
}
System..::.Object
  System.Windows.Forms..::.HtmlDocument
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2012 Microsoft. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker