傑克達與瑞兒絲的大小事

快速筆記整理網站開發上碰到的各種技巧和問題,免得年紀大忘光,至少還有一個地方可以查找

Tag Archives: nokogiri

如何避免 Nokogiri 生成 html 時加上 doc 標籤

最近開發碰到一個需求很特殊,在使用 Nokogiri 解析 html 內容時,最後輸出 html 時,本文內容裡不要有 DTD 標籤描述,剛上網查到一種解法,照慣例先筆記

實作方式:

原本透過 Nokogiri 在產出 html 時,只需使用 to_html 方法,但 Nokogiri 會自動將 DTD 標籤補上,如下:

require 'nokogiri'

doc = Nokogiri::HTML('<p>foobar</p>')
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>foobar</p></body></html>

如果不想在產出 html 時加上 DTD 標籤,可以利用以下的方式:

doc = Nokogiri::HTML.fragment('<p>foobar</p>')
puts doc.to_html
# >> <p>foobar</p>

改為使用 HTML.fragment 知會 Nokogiri 只使用片段內容來解析,那麼 to_html 產出的內容就不會包含 DTD 標籤了

參考文章:

http://stackoverflow.com/questions/4723344/how-to-prevent-nokogiri-from-adding-doc-tags

http://nokogiri.org/

廣告