当前位置: 代码迷 >> 综合 >> 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 文档中可能存在的任何类型的元素,如:BODYTABLEFORM 等。此类公开可以在所有元素中找到的最常用属性。

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

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

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

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

 

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

 

        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 元素。

  相关解决方案