2010-07-08 1 views
2

이것은 previous question의 연속입니다. 이 Nokogiri 스 니펫에 문제가 있습니다.Nokogiri 명령으로 HTML 태그를 제거하는 이유는 무엇입니까?

>> require 'nokogiri' 
>> html = 'bad<p>markup</p>with<img src="foo.jpg">' 
>> Nokogiri::HTML(html).at_css('body').children.map {|x| '<p>' + x.text + '</p>'}.join('') 
=> "<p>bad</p><p>markup</p><p>with</p><p></p>" 

내 이미지 태그에는 어떤 변화가 있습니까? Nokogiri가 현재 존재하는 모든 HTML 태그 ("마크 업"이라는 단어 주위의 원래 <p> 포함)를 제거하고이를 대체 할 수 있습니다. 어떻게 이런 일이 일어나지 않도록합니까? 내가 그 전적으로 태그가 지정되지 않은 텍스트가 <p> 태그에 싸여 보장되어하고 싶은 모든 ... 그것은 텍스트 노드의 경우

답변

2

만 그렇지 않은 경우에 to_html를 호출합니다 p 태그의 요소를 포장 :

require 'nokogiri' 

html = 'bad<p>markup</p>with<img src="foo.jpg">' 

Nokogiri::HTML(html).at_css('body'). 
children.map do |x| 
    if x.text? 
    '<p>' + x.text + '</p>' 
    else 
    x.to_html 
    end 
end.join('') 
#=> "<p>bad</p>\n<p>markup</p><p>with</p><img src=\"foo.jpg\">" 
+0

아, 그래 맞아. 고맙습니다! :) –