2011-02-04 71 views
4

我目前正在使用一個自動化框架,它將一個網頁拉下來進行分析,然後呈現爲字符串進行處理。 Rhino Javascript引擎可以幫助解析返回的網頁。使用JavaScript將HTML字符串加載到DOM樹中

看來,如果字符串(這是一個完整的網頁)可以在DOM表示中加載,它將爲解析和分析內容提供一個非常好的接口。

僅使用Javascript,這是一個可能和/或可行的概念嗎?

編輯:

我會分解爲這個問題澄清:說我在JavaScript中包含一個字符串的html喜歡這樣:

 

var $mywebpage = '<!DOCTYPE HTML PUB ...//snipped//... </body></html>'; 
 

是有可能/現實以某種方式加載它成爲一個DOM對象?

+0

如果我的理解沒錯,你可以將一個html字符串附加到文檔正文'document.body.innerHTML =「string」' – JCOC611

回答

0

如果您有包含html的這個變量,您可以將它加載到DOM對象中,例如通過id。

var mywebpage = '<!DOCTYPE HTML PUB ...//snipped//... </body></html>'; 

element = document.getElementById('dom-id'); //<-- element you are loading it into. 

element.innerHTML = mywebpage; 
+0

這是朝正確方向邁出的一步。由於我使用犀牛,我不確定我是否可以實際訪問或可能「創建」一個dom對象。我會繼續關注這一點,並隨着我學習更多而更新。 – xelco52

+0

好吧,好吧,只要你有一個html字符串,它會加載到你選擇的任何DOM元素。 – jondavidjohn

1

我接受JonDavidJohn的答案,因爲這是解決我的問題是有用的,認爲包括其他可能在未來查看此這個附加的應答。

似乎Javascript允許將html字符串加載到DOM元素中,但DOM不是核心ECMAScript的一部分,因此在Rhino下運行的腳本不可用。作爲值得一提的一個附註,在Rhino 1.6中實現的一個很好的選擇是E4X。雖然不是DOM實現,但確實提供了概念上類似的功能。

1

如果文檔是XHTML,則可以使用任何XML解析器解析它。 E4X可能會很好地完成這項工作,就像內置的Java XML解析接口一樣。

的env.js庫旨在模擬犀牛在瀏覽器環境,但我相信你的文檔也需要符合XHTML:

http://ejohn.org/blog/bringing-the-browser-to-the-server/

http://www.envjs.com/

如果它是HTML,但是,它更困難,因爲瀏覽器被設計爲在解析標記時非常寬鬆。在這裏看到HTML解析器的Java中的列表:

http://java-source.net/open-source/html-parsers

這不是一個容易解決的問題。人們甚至已經通過JNI在Java中嵌入了Mozilla Gecko引擎,以便使用它的分析功能。

我建議你看看下面的純Java項目:

http://lobobrowser.org/cobra.jsp

路寶項目的目標是開發一個純Java的Web瀏覽器。這是一個非常有趣的項目,並且有很多,但我相信你可以在自己的應用程序很容易使用的解析器獨立的,如下面的鏈接描述:

http://lobobrowser.org/cobra/java-html-parser.jsp

相關問題