命名空间: 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 元素。