簡體   English   中英

使用Javascript將HTML字符串加載到DOM樹中

[英]Load HTML string into DOM tree with Javascript

我目前正在使用一個自動化框架,它將網頁拉下來進行分析,然后將其顯示為一個字符串進行處理。 Rhino Javascript引擎可用於幫助解析返回的網頁。

似乎如果字符串(它是一個完整的網頁)可以加載到DOM表示中,它將為解析和分析內容提供一個非常好的界面。

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

編輯:

我將分解問題以澄清:說我在javascript中有一個包含html的字符串,如:


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

以某種方式將它加載到dom對象中是否可行/現實?

我接受了JonDavidJohn的答案,因為它有助於解決我的問題,包括為將來可能會看到這個的其他人提供這個額外的答案。

看來,雖然Javascript允許將html字符串加載到DOM元素中,但DOM不是核心ECMAScript的一部分,因此在Rhino下運行的腳本不可用。

作為值得一提的旁注,在Rhino 1.6中實現的一個很好的替代方案是E4X。 雖然不是DOM實現,但它確實提供了概念上類似的功能。

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

env.js庫旨在模擬Rhino下的瀏覽器環境,但我相信您的文檔還需要符合XHTML標准:

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

http://www.envjs.com/

但是,如果它是HTML,那就更難了,因為瀏覽器的設計在解析標記方面非常寬松。 請參閱此處獲取Java中的HTML解析器列表:

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

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

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

http://lobobrowser.org/cobra.jsp

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

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

如果你有這個包含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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM