Поделиться через


HtmlElement.Children Свойство

Определение

Получает коллекцию HtmlElementCollection всех дочерних элементов для текущего элемента.

public:
 property System::Windows::Forms::HtmlElementCollection ^ Children { System::Windows::Forms::HtmlElementCollection ^ get(); };
public System.Windows.Forms.HtmlElementCollection Children { get; }
member this.Children : System.Windows.Forms.HtmlElementCollection
Public ReadOnly Property Children As HtmlElementCollection

Значение свойства

Коллекция всех объектов HtmlElement, для которых текущий элемент является родительским.

Примеры

В следующем примере кода рассматривается произвольный HTML-документ и создается строка, описывающая элементы, с отступами и номерами уровней, используемыми для указания того, насколько глубоко вложены элементы в документ. Для этого выполняется рекурсивный поиск Children по коллекции всех элементов, начиная с HTML-элемента в верхней части документа. В этом примере кода требуется, чтобы в приложении был WebBrowser элемент управления с именем WebBrowser1.

private void PrintDomBegin()
{
    if (webBrowser1.Document != null)
    {
        HtmlElementCollection elemColl = null;
        HtmlDocument doc = webBrowser1.Document;
        if (doc != null)
        {
            elemColl = doc.GetElementsByTagName("HTML");
            String str = PrintDom(elemColl, new System.Text.StringBuilder(), 0);
            webBrowser1.DocumentText = str;
        }
    }
}

private string PrintDom(HtmlElementCollection elemColl, System.Text.StringBuilder returnStr, Int32 depth)
{
    System.Text.StringBuilder str = new System.Text.StringBuilder();

    foreach (HtmlElement elem in elemColl)
    {
        string elemName;

        elemName = elem.GetAttribute("ID");
        if (elemName == null || elemName.Length == 0)
        {
            elemName = elem.GetAttribute("name");
            if (elemName == null || elemName.Length == 0)
            {
                elemName = "<no name>";
            }
        }

        str.Append(' ', depth * 4);
        str.Append(elemName + ": " + elem.TagName + "(Level " + depth + ")");
        returnStr.AppendLine(str.ToString());

        if (elem.CanHaveChildren)
        {
            PrintDom(elem.Children, returnStr, depth + 1);
        }

        str.Remove(0, str.Length);
    }

    return (returnStr.ToString());
}
Private Sub PrintDomBegin()
    If (WebBrowser1.Document IsNot Nothing) Then
        Dim ElemColl As HtmlElementCollection

        Dim Doc As HtmlDocument = WebBrowser1.Document
        If (Not (Doc Is Nothing)) Then
            ElemColl = Doc.GetElementsByTagName("HTML")
            Dim Str As String = PrintDom(ElemColl, New System.Text.StringBuilder(), 0)

            WebBrowser1.DocumentText = Str
        End If
    End If
End Sub

Private Function PrintDom(ByVal ElemColl As HtmlElementCollection, ByRef ReturnStr As System.Text.StringBuilder, ByVal Depth As Integer) As String
    Dim Str As New System.Text.StringBuilder()

    For Each Elem As HtmlElement In ElemColl
        Dim ElemName As String

        ElemName = Elem.GetAttribute("ID")
        If (ElemName Is Nothing Or ElemName.Length = 0) Then
            ElemName = Elem.GetAttribute("name")
            If (ElemName Is Nothing Or ElemName.Length = 0) Then
                ElemName = "<no name>"
            End If
        End If

        Str.Append(CChar(" "), Depth * 4)
        Str.Append(ElemName & ": " & Elem.TagName & "(Level " & Depth & ")")
        ReturnStr.AppendLine(Str.ToString())

        If (Elem.CanHaveChildren) Then
            PrintDom(Elem.Children, ReturnStr, Depth + 1)
        End If

        Str.Remove(0, Str.Length)
    Next

    PrintDom = ReturnStr.ToString()
End Function

Комментарии

Многие элементы внутри HTML-файла могут содержать другие ЭЛЕМЕНТЫ HTML под ними. Коллекция Children предоставляет простой механизм для изучения древовидной структуры документа.

Children Предоставляет только элементы, прямым родительским элементом которых является текущий элемент. Если у вас есть HtmlElement для элемента , Children вы получите все TR элементы (строки) внутри TABLETABLE . Чтобы получить TD элементы (ячейки), содержащиеся внутри TR элементов, необходимо использовать коллекцию Children для каждого отдельного TR элемента или коллекцию в AllHtmlElement.

Элементы в этой коллекции не гарантируются в исходном порядке.

Если CanHaveChildren имеет значение false, Children всегда будет пустым.

Применяется к

См. также раздел