13.1.1 浏览器互操作支持(图)
13.2 访问文档对象模型
13.2.1 文档对象模型简介
Silverlight中使用HtmlDocument类来表示浏览器中的HTML文档对象模型,使用HtmlElement表示文档对象模型中的HTML元素。HtmlDocument的主要属性如下所示:
C#public sealed class HtmlDocument : Htmltpublic HtmlElementBodyget; public string Cookies get; set; publicHtmlElementDocumentElement get; public Uri DocumentUri get; publicboolIsReady get; public IDictionary<string, string>QueryStringget;
各个属性的解释如下所示。
Body:获取对HTML文档的BODY元素的引用。
Cookies:获取或设置浏览器的Cookie字符串。
DocumentElement:获取对浏览器的DOCUMENT元素的引用。
DocumentUri:获取统一资源标识符URI对象,该对象表示宿主Silverlight插件的 HTML文档。
IsReady:指示浏览器是否完全加载了HTML页。
QueryString:表示当前页面URL上的查询字符串参数。
HtmlElement的主要属性如下所示:
C#public sealed class HtmlElement : HtmltpublicttCollectionChildren get; public string CssClass get; set; publicstring Idget; set; public HtmlElement Parent get; public stringTagNameget;
各个属性的解释如下所示。
Children:获取只读的HTML元素集合,这些元素是当前HTML元素的直接子元素。
CssClass:获取或设置当前HTML元素CSS类字符串。
Id:获取当前HTML元素标识符。
Parent:获取对当前HTML元素的父级引用。
TagName:获取当前HTML元素的HTML标记名称。
下面看一个示例,使用以上对象来获取HTML页面文档对象模型中的HTML元素树,通过HtmlPage静态类的Document属性可以获得当前页面文档对象模型的引用,然后通过递归的方式找到所有的元素,如下面的示例代码所示:
StringBuilder reuslt = newStringBuilder();voidGetElement(HtmlElement element, int indent)if(element.TagName “!”)return;
reuslt.Append(new String(” “, indent * 4));reuslt.Append(”<”+element.TagName);if (element.Id != “”)reuslt.Append(” id=\”"+element.Id + “\”");reuslt.Append(”>\n”);
foreach (HtmlElement childElementinelement.Children)GetElement(childElement, indent + 1);
this.tblTree.Text = reuslt.ToString();
运行效果如图13-2所示。
![]() |
(点击查看大图)图13-2
