国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

詳解一個完美的HTML解析引擎(Jumony)

2020-03-24 18:15:28
字體:
來源:轉載
供稿:網(wǎng)友
也許很多人會認為,目前的HTML解析器已經(jīng)足夠了,甚至于簡單的正則,也已經(jīng)可以滿足操縱HTML文檔的需求。是的,對于互聯(lián)網(wǎng)上絕大多數(shù)的 HTML文檔,事實上都大部分滿足了XHTML的規(guī)范,對于它們的解析,并不需要多么強大的解析器。但是強大的解析器是一回事,而完美的解析器又是另一回事。

Jumony Core首先提供了一個近乎完美的HTML解析引擎,其解析結果無限逼近瀏覽器的解析結果。不論是無結束標簽的元素,可選結束標簽的元素,或是標記屬性,或是CSS選擇器和樣式,一切合法的,不合法的HTML文檔,瀏覽器解析成啥樣,Jumony就解析成啥樣。也就是說,Jumony解析的結果,與瀏覽器解析的結果別無二致,讓你可以再也不用關心HTML文檔是否可以被識別,瀏覽器能看,Jumony就能解。

完美和強大只有一步之遙,但是完美的解析器可以讓你永遠不用關心HTML源文檔。

以下是Jumony解析器所支持的特性不完全列表

特性例子孤立的<解析為文本< a應當解析為&lt; a孤立的>解析為文本<a>></a>應當解析為<a>&gt;</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可以從互聯(lián)網(wǎng)上直接抓取文檔分析,并根據(jù)HTTP頭自動識別編碼:

new JumonyParser().LoadDocument( "www.survivalescaperooms.com/" ).Find( ".post_item a.titlelnk" )

而目前僅次于Jumony的HTML解析開源項目HtmlAgilityPack早已停止了更新 ,這么多年過去了,對于最基本的<form>元素的解析都還存在問題。

二、CSS樣式設置支持

僅僅只是完美解析HTML,并不能帶來多少好處,上面已經(jīng)說過,事實上大部分的HTML文檔,都可以用二流的解析器甚至是簡單的正則表達式加以分析,那么為什么我們需要Jumony呢?

答案是一個HTML引擎不僅僅是解析DOM結構這么簡單。

考慮這樣的場景:我需要給一個元素的display樣式設置一個none值。在瀏覽器中,我們只需要簡單的 element.style.display = "none"便可以滿足我們的要求。現(xiàn)在,通過解析器已經(jīng)得到了我們所需要的DOM,但設置樣式還需要進行字符串的拼接么?

不需要,Jumony支持CSS樣式解析,甚至部分CSS樣式縮寫規(guī)則也能識別,在Jumony中,給元素設置一個樣式和在瀏覽器中一樣簡單:

element.Style( "display", "none" )        

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 房产| 卢龙县| 麟游县| 钟祥市| 浪卡子县| 大悟县| 苗栗市| 尼勒克县| 高碑店市| 淮滨县| 石嘴山市| 玉田县| 闸北区| 呼伦贝尔市| 菏泽市| 武平县| 泗阳县| 兖州市| 九江县| 边坝县| 襄樊市| 丹凤县| 易门县| 浮山县| 新丰县| 乌拉特前旗| 常德市| 绿春县| 德州市| 新蔡县| 金湖县| 平果县| 黄冈市| 云和县| 民勤县| 北流市| 永城市| 井冈山市| 红安县| 兴和县| 新干县|