如何删除Nokogiri节点?

如何使用Nokogiri去除<img>标签?

我有下面的代码,但它不会工作:

 # str = '<img src="canadascapital.gc.ca/data/2/rec_imgs/5005_Pepsi_H1NB.gif"/…; testt<a href="#">test</a>tfbu' f = Nokogiri::XML.fragment(str) f.search('//img').each do |node| node.remove end puts f 

试试!

 f = Nokogiri::XML.fragment(str) f.search('.//img').remove puts f 

我更喜欢CSS over XPath,因为它通常更具可读性。 切换到CSS:

 require 'nokogiri' doc = Nokogiri::HTML('<html><body><img src="foo"><img src="bar"></body></html>') 

parsing后的文件看起来像:

 doc.to_html # => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body>\n<img src=\"foo\"><img src=\"bar\">\n</body></html>\n" 

删除<img>标签:

 doc.search('img').each do |src| src.remove end 

结果是:

 doc.to_html # => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body></body></html>\n"