這是如何使用的解析器做一個簡單的例子:
require 'nokogiri'
html = '<p>lorem ipsum blah blah ipsum</p>
<!--start-->
REPLACE MULTI-LINE
CONTENT HERE...
<!--end-->
<p>other stuff still here...</p>'
doc = Nokogiri.HTML(html)
puts doc.to_html
解析我們後得到:
# >> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# >> <html><body>
# >> <p>lorem ipsum blah blah ipsum</p>
# >>
# >> <!--start-->
# >> REPLACE MULTI-LINE
# >> CONTENT HERE...
# >> <!--end-->
# >>
# >> <p>other stuff still here...</p>
# >> </body></html>
doc.at('//comment()/following-sibling::text()').content = "\nhello world!\n"
puts doc.to_html
找到評論,步進到下一text()
節點和更換後它:
# >> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# >> <html><body>
# >> <p>lorem ipsum blah blah ipsum</p>
# >>
# >> <!--start-->
# >> hello world!
# >> <!--end-->
# >>
# >> <p>other stuff still here...</p>
# >> </body></html>
如果你的HTML總是很簡單,沒有pos具有破壞搜索模式的字符串的可能性,那麼您可以使用搜索/替換。
如果你檢查一下,你會發現,對於任何非平凡的HTML操作,你應該去解析器。這是因爲他們處理文檔的實際結構,所以如果文檔發生變化,解析器不會感到困惑。
如果您使用模板文件生成HTML內容,您可能需要查看ERB或[HAML](http://haml-lang.com/)。就個人而言,我更喜歡HAML,因爲它是一個很好的HTML簡寫。如果你需要在樣板中注入不同的內容,要麼會比搜索/替換更好。 – 2011-01-30 04:53:59