2009-10-23 23 views
2

我有一個字符串,如 <html><body><div id="message">Hello World!</div></body></html> 我想獲取#message元素的內容,而不用自己解析HTML。從壁虎的字符串創建文檔

我想也許我可以從Gecko中的字符串創建一個文檔對象(這是爲Firefox添加的),但我沒有看到任何簡單的方法。

我注意到有一個createDocument方法,但是不需要一個字符串。我不得不從文本中去除<html>部分,然後我又開始承擔一些東西。

任何人有任何想法?謝謝。

編輯:這似乎爲我工作:

doc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null); 
doc.firstChild.innerHTML = '<html><body><div id="message">Hello World!</div></body></html>'; 
node = doc.getElementById("message"); 
alert(node.innerHTML); 
+1

您應該在編輯時添加新的答案。 – brianpeiris 2009-10-23 23:11:11

回答

2

你在哪裏得到的字符串?如果是XML,則可以使用DOMParser

否則,您必須創建一個HTML文檔 - https://developer.mozilla.org/en/Parsing_HTML_From_Chrome

剛剛使用createDocument的作品看起來很可疑,因爲人們總是使用更復雜的解決方案。

+0

我通過xhr從遠程源獲取它。 – 2009-10-25 07:03:02

+0

我會嘗試domparser方法,只是好奇它是否工作,而且更簡單。謝謝。 – 2009-10-25 07:04:58

+0

是的,但誰控制遠程源返回數據的格式? – Nickolay 2009-10-25 09:22:24

0

是它始終是語法?如果是這樣,爲什麼不使用正則表達式?

+0

我的想法確切 – pstanton 2009-10-23 23:00:32

+0

它可能總是或可能不總是那種語法。 – 2009-10-23 23:05:11

3

不喜歡回答我的問題,但是這似乎已經爲我工作:

doc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null); 
doc.firstChild.innerHTML = '<html><body><div id="message">Hello World!</div></body></html>'; 
node = doc.getElementById("message"); 
alert(node.innerHTML); 
+0

不要忘記聲明變量。 – kangax 2009-10-25 04:46:57

+0

它們在方法開始時在單個以逗號分隔的行中聲明。我們使用jslint。 – 2009-10-25 07:01:27