Nokogiri NodeSet에서 이스케이프 처리되지 않은 내부 html을 가져오고 싶습니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?루비 Nokogiri NodeSet의 inner_html을 어떻게 이스케이프 처리합니까?
7
A
답변
4
아무 것도없는 것은 무엇입니까?
nodeset.inner_html
0
이전 버전의 libxml2로 인해 Nokogiri에서 일부 이스케이프 문자를 반환 할 수 있습니다. 최근에이 문제가 발생했습니다.
2
loofah 보석이 나를 많이 도와주었습니다.
1
는 CDATA에 노드를 랩 :
def wrap_in_cdata(node)
# Using Nokogiri::XML::Node#content instead of #inner_html (which
# escapes HTML entities) so nested nodes will not work
node.inner_html = node.document.create_cdata(node.content)
node
end
Nokogiri::XML::Node#inner_html
는 CDATA 섹션을 제외하고 HTML 엔티티를 이스케이프합니다.
fragment = Nokogiri::HTML.fragment "<div>Here is an unescaped string: <span>Turn left > right > straight & reach your destination.</span></div>"
puts fragment.inner_html
# <div>Here is an unescaped string: <span>Turn left > right > straight & reach your destination.</span></div>
fragment.xpath(".//span").each {|node| node.inner_html = node.document.create_cdata(node.content) }
fragment.inner_html
# <div>Here is an unescaped string: <span>Turn left > right > straight & reach your destination.</span>\n</div>