2009-12-31 26 views
5

Tôi có một tiêu đề doc.at('head/title').inner_html mà đi ra & và nó phải là &.Làm thế nào để unescape HTML trong Nokogiri Ruby, do đó & vẫn & không &

tài liệu gốc của tôi là:

<head><title>Foo & Bar</title></head> 

nhưng trong đi ra như sau:

>> doc = Nokogiri::HTML.parse(file, nil, "UTF-8") 
>> doc.at('head/title') 
=> #<Nokogiri::XML::Element:0x..fdb851bea name="title" children=#<Nokogiri::XML::Text:0x..fdb850808 "Foo & Bar">> 
>> doc.at('head/title').inner_html 
=> "Foo &amp; Bar" 

Tôi không muốn sử dụng iconv hoặc CGI như:

>> require 'cgi' 
>> CGI.unescapeHTML(doc.at('head/title').inner_html) 
=> "Foo & Bar" 

đó là xấu xí và bất tiện.

Trả lời

7

Sử dụng content thay vì inner_html để lấy nội dung dưới dạng văn bản thuần thay vì (X) HTML.

irb(main):011:0> doc.at('head/title').content 
=> "Foo & Bar" 
Các vấn đề liên quan