当前位置: 代码迷 >> 综合 >> NET Framework 类库 HtmlElement 类
  详细解决方案

NET Framework 类库 HtmlElement 类

热度:81   发布时间:2024-01-10 11:24:24.0

 

命名空间:  System.Windows.Forms
程序集:  System.Windows.Forms(在 System.Windows.Forms.dll 中)

HtmlElement 表示一个 HTML 文档中可能存在的任何类型的元素,如:BODY、TABLE 和 FORM 等。此类公开可以在所有元素中找到的最常用属性。

大多数元素可以拥有“子元素”:即放置在其下的其他 HTML 元素。使用 CanHaveChildren 属性测试给定元素是否有子级,并使用 Children 集合循环访问这些子级。Parent 属性返回在其中嵌套当前元素的 HtmlElement。

经常需要访问基础元素上未由 HtmlElement 直接公开的属性 (Attribute)、属性 (Property) 和方法,如 IMG 元素上的 SRC 属性 (Attribute) 或 FORM 上的 Submit 方法。GetAttribute 和 SetAttribute 方法使您可以检索和更改某个特定元素中的任何属性 (Attribute) 或 (Property),而 InvokeMember 提供对未在托管文档对象模型 (DOM) 中公开的任何方法的访问。如果应用程序拥有非托管代码权限,则还可以使用 DomElement 属性 (Attribute) 访问未公开的属性 (Property) 及方法。

使用 TagName 属性 (Property) 测试元素是否属于某种特定类型。

任何 HTML 文档均可在运行时修改。您可以使用 HtmlDocument 的 CreateElement 方法创建新的 HtmlElement 对象,并使用 AppendChild 方法或 InsertAdjacentElement 方法将这些新对象添加到其他元素中。还可以创建 HTML 标记形式的元素,并将它们分配给现有元素的 InnerHtml 属性。

 

下面的代码示例演示如何检查一个任意 HTML 文档并派生一个描述 HTML 元素的字符串,该字符串带有缩进及缩进等级编号,用于指示这些元素在此文档中的嵌套深度。此代码示例要求应用程序承载一个名为 WebBrowser1 的 WebBrowser 控件。

 

        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());
        }

表示网页内的一个 HTML 元素。

  相关解决方案