2009-12-31 6 views
5

& gelen doc.at('head/title').inner_html adlı bir başlığa sahibim ve & olmalıdır.Nokogiri'de HTML'yi nasıl çıkarmanız gerekir Ruby, bu nedenle & kalır ve değil &

Benim orijinal belgedir:

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

ama olduğu gibi çıkar şu:

>> 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" 

ben gibi Iconv veya CGI kullanmak istemiyorsanız:

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

Bu çirkin ve rahatsız edici. content yerine inner_html ait

cevap

7

Kullanım yerine (X) HTML düz metin olarak içeriği almak için.

irb(main):011:0> doc.at('head/title').content 
=> "Foo & Bar" 
İlgili konular