2010-11-13 68 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>