我們在項目中有一個特殊的需求,我們必須通過JavaScript解析HTML(來自AJAX響應)客戶端的字符串(僅限於)。那是正確的在PHP或Java中沒有解析!我已經經歷了整個一週的StackOverflow,但還沒有得到一個可接受的解決方案。用於DOM的JavaScript解析器
上要求更多的細節:
我們可以使用任何庫(最好是Dojo和/或jQuery的),或入鄉隨俗!
我們需要分析,我們得到一個字符串,包括
<head>
和<body>
的整個HTML文檔。我們還需要將經過分析的DOM結構有時序列化爲字符串。
最後,我們不想將解析的DOM附加到當前文檔。相反,我們會將其發送回服務器進行永久存儲。
例如:我們需要這樣的東西
var dom = HTMLtoDOM('<html><head><title> This is the old title. </title></head></html>');
dom.getElementsByTagName('title')[0].innerHTML = "This is a new Title";
隨着我的研究,這是我們的選擇:
一個TinyMCE Parser。問題?我們需要包含一位我認爲的編輯。如何在不需要編輯器的情況下解析HTML?
John Resig's Parser。應該是我們最好的選擇。不幸的是,當給定頁面的全部內容時,解析器崩潰!
jQuery $(htmlString)或dojo.toDom(htmlString)。兩者都依靠文檔分區,因此吞噬了
<head>
和<body>
!
編輯:我們想要序列化的HTML,所以我們可以通過正則表達式捕獲某些自定義HTML Commnets。我們需要讓用戶有機會編輯元標籤,標題標籤等,因此HTML解析器。
哦,我覺得我會在堆棧溢出中遇害,即使我只是提示在通過RegExp解析HTML!
創建一個IFRAME節點並把它放在那裏? – 2012-03-02 21:01:51
但是..我不明白你爲什麼要在將已經序列化的HTML字符串發送到服務器之前解析它。你必須將它重新序列化回一個字符串,然後傳回給服務器,對吧? – 2012-03-02 21:02:52
@JensRoland我們想要從RegExp中捕獲某些自定義HTML註釋,然後進行序列化。我們希望讓用戶能夠編輯標題標籤,元標籤等,從而進行DOM解析! – 2012-03-02 21:13:12