2010-11-13 97 views
1

某些HTML結構片段存儲在服務器上。在保存之前,它們將被預處理。nokogiri和視頻標籤

預處理將HTML 5視頻標籤插入到特定位置。

我試圖做到這一點,但是,每次我處理的視頻標籤,我得到如下:

標籤視頻無效;

我認爲,他們這是因爲HTML 4.0的DOCTYPE ,我在調試器中看到:!

< DOCTYPE HTML PUBLIC 「 - // W3C // DTD HTML 4.0過渡// EN」

我也嘗試使用XML作爲解析器,但是我無法弄清楚,如何從Nokogiri :: XML對象獲取乾淨的HTML代碼。

任何想法?

+0

一個代碼示例顯示你正在嘗試做會有很大幫助。 – 2010-11-18 00:06:19

回答

0

首先,您可以在XML文檔上使用#to_html(或#to_xhtml)。但是,我不確定這是必要的。創建元素時,我沒有收到任何'標記視頻無效'錯誤。下面是展示如何分析現有的HTML4,注入了視頻元素,並再次獲得HTML出一個示例程序:

require 'nokogiri' 

html = Nokogiri::HTML <<ENDHTML 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
    <html><head><title>Sauceome</title></head> 
    <body><p class="video" id="foo"><!-- put vid here--></p></body></html> 
ENDHTML 
wrap = html.at('.video') 
wrap.inner_html="<video src='#{wrap['id']}.mov'></video>" 

puts html.to_html 
#=> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
#=> <html> 
#=> <head> 
#=> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
#=> <title>Sauceome</title> 
#=> </head> 
#=> <body><p class="video" id="foo"><video src="foo.mov"></video></p></body> 
#=> </html>