Jumony Core首先提供了一个近乎完美的HTML解析引擎,其解析结果无限逼近浏览器的解析结果。不论是无结束标签的元素,可选结束标签的元素,或是标记属性,或是CSS选择器和样式,一切合法的,不合法的HTML文档,浏览器解析成啥样,Jumony就解析成啥样。也就是说,Jumony解析的结果,与浏览器解析的结果别无二致,让你可以再也不用关心HTML文档是否可以被识别,浏览器能看,Jumony就能解。
完美和强大只有一步之遥,但是完美的解析器可以让你永远不用关心HTML源文档。
以下是Jumony解析器所支持的特性不完全列表
特性 | 例子 | 孤立的<解析为文本 | < a应当解析为< a | 孤立的>解析为文本 | <a>></a>应当解析为<a>></a> | 标记属性(没有值的属性) | <input type="text" checked /> | 元素丢失结束标签 | <p><a href="test.html">测试链接</p> | 可选结束标签元素 "body", "colgroup", "dd", "dt", "head", "html", "li", "option", "p", "tbody", "td", "tfoot", "th", "thead", "tr" | <p>abc<p>123 | 无结束标签元素 "area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "isindex", "link", "meta", "param", "wbr", "bgsound", "spacer", "keygen" | <img src="1.jpg"> | CData元素 | <script>if ( 1<a ) alert( "<p>" );</script> | "script", "style", "textarea", "title" | 预格式化元素 | <pre> 前面有空格</pre> | 属性值使用单引号 | <a href='#'> | 属性值使用双引号 | <a href="#" | 属性值不使用引号 | <a href=#> | 属性值丢失(但有等号) | <a href=> | 属性值前面有空格 | <a href= "test.html"> | 解析HTML声明 | <!DOCTYPE html> |
不仅仅是可以从文本中解析HTML,Jumony的API可以从互联网上直接抓取文档分析,并根据HTTP头自动识别编码:
new JumonyParser().LoadDocument( "www.VeVb.com/" ).Find( ".post_item a.titlelnk" )
而目前仅次于Jumony的HTML解析开源项目HtmlAgilityPack早已停止了更新 ,这么多年过去了,对于最基本的<form>元素的解析都还存在问题。
二、CSS样式设置支持仅仅只是完美解析HTML,并不能带来多少好处,上面已经说过,事实上大部分的HTML文档,都可以用二流的解析器甚至是简单的正则表达式加以分析,那么为什么我们需要Jumony呢?
答案是一个HTML引擎不仅仅是解析DOM结构这么简单。
考虑这样的场景:我需要给一个元素的display样式设置一个none值。在浏览器中,我们只需要简单的 element.style.display = "none"便可以满足我们的要求。现在,通过解析器已经得到了我们所需要的DOM,但设置样式还需要进行字符串的拼接么?
不需要,Jumony支持CSS样式解析,甚至部分CSS样式缩写规则也能识别,在Jumony中,给元素设置一个样式和在浏览器中一样简单:
element.Style( "display", "none" )郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答