我有一个HTML文件,其中所有
<div class="replace-me">
</div>
必须替换为
<video src='my_video.mov'></video>
代码是:
doc.css("div.replace-me").each do |div|
div.replace "<video src='my_video.mov'></video>"
end
很简单,但不幸的是,它不适用于我。 Nokogiri崩溃并显示以下错误:
undefined method `children' for nil:NilClass
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:in `method_missing'
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/html/document_fragment.rb:16:in `initialize'
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:424:in `new'
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:424:in `fragment'
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:776:in `coerce'
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:331:in `replace'
用div
代替:
doc.css("div.replace-me").each do |div|
div.replace "<div>Test</div>"
end
这是Nokogiri错误,还是我做错了什么?
为此目的,add_child
,inner_html
和其他设置程序也会发生相同的问题。
我将引用您先前的问题的评论:
这是由于HTML的严格性((HTML具有一组预定义的元素)] >>。用Nokogiri :: XML(self.content)替换Nokogiri :: HTML(self.content),不要忘记稍后手动添加DOCTYPE声明。
如果您查看日志,则用Nokogiri选择的部分将变为零。
我无法重复这个问题。当然,这个问题很旧,但这可行: