DOM即是文档对象模型(Document Object Model)的缩写,由于HTML的解释分析引擎种类繁多,互不通用。而W3C定义的HTML DOM API冗长啰嗦,功能重复且没有统一的命名规则而不便于使用,且除了浏览器的HTML分析器外,几乎没人支持。所以Jumony以微软的LINQ to XML的XML DOM API模型为基础,定义了一套HTML的标准DOM API模型以及对API方便的操作,即为Jumony DOM。

Jumony DOM API全部由接口定义,且遵循最小定义原则,仅仅只必须的不可替代描述DOM对象的方法和属性之外。所以各种HTML DOM模型都可以方便的实现Jumony DOM API,现在Jumony项目已经为HtmlAgilityPack提供了Jumony DOM API的实现,用HtmlAgilityPack分析的HtmlDocument对象,只需要简单的调用AsDocument扩展方法(定义于Ivony.Html.HtmlAgilityPackAdapter)就能方便的转换为符合Jumony DOM API的IHtmlDocument对象。

Jumony DOM API现在所定义的接口有如下一些:
  • IHtmlDomObject,定义所有HTML DOM对象的抽象。无论是抽象对象(Document或是Fragment),还是实体内容节点(Element或Comment等),都实现了这个接口。
    • RawObject属性,获取原始DOM上的对象,由于HTML DOM对象可能被多次包装来实现Jumony DOM API或者附加功能,这个属性则可以获取原始分析或创建出来的原始DOM对象。
    • Document属性,获取DOM对象所属的文档。
    • SyncRoot属性,获取一个对象,用于同步操作,如果DOM不支持同步,则可以返回null。
  • IHtmlNode,继承自IHtmlDomObject,定义了所有HTML DOM节点需要实现的接口,HTML DOM节点包括元素、文本、注释和特殊标签。
    • Container属性,获取节点所属的容器。
    • RawHtml属性,获取原始的HTML文本,如果DOM不支持或是动态创建的节点,则返回null。
    • Remove方法,将节点从文档的DOM上移除。
  • IHtmlElement,定义HTML元素。
    • Name属性,获取元素名
    • Attributes方法,获取所有属性
  • IHtmlTextNode,定义HTML文本节点。
  • IHtmlComment,定义HTML注释。
  • IHtmlSpecial,定义HTML特殊标签。
  • IHtmlDocument,定义HTML文档。
  • HtmlFragment,定义HTML文档碎片

Last edited Dec 3, 2010 at 7:15 AM by Ivony, version 1

Comments

No comments yet.