2013-07-31 262 views
2

如何在Ruby中按名稱刪除某些HTML標記?使用Ruby刪除某些HTML標記

例如:

string = "<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>" 

string.magic_method("h1") #=> "<!DOCTYPE html><html><body><p>My first paragraph.</p></body></html>" 

我寫了一些正則表達式來做到這一點,但想知道是否有可能做同樣的事情一個圖書館或本地方法。

回答

5

使用Nokogiri

require 'nokogiri' 

doc = Nokogiri::HTML <<-_HTML_ 
<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html> 
_HTML_ 

doc.at('h1') 
# => #(Element:0x4d2f006 { 
#  name = "h1", 
#  children = [ #(Text "My First Heading")] 
#  }) 

doc.at('h1').unlink 
puts doc.to_html 
# >> <!DOCTYPE html> 
# >> <html><body><p>My first paragraph.</p></body></html>