如何获取ruby Nokogiri NodeSet的inner_html未转义?

时间:2009-11-19 11:33:55

标签: ruby nokogiri

我想从Nokogiri NodeSet获取未转义的内部html。有谁知道怎么做?

4 个答案:

答案 0 :(得分:4)

有什么不合适吗?

nodeset.inner_html

答案 1 :(得分:2)

loofah宝石在这里给了我很多帮助。

答案 2 :(得分: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 &gt; right &gt; straight &amp; 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>

答案 3 :(得分:0)

旧版本的libxml2可能会导致Nokogiri返回一些转义字符。我最近遇到了这个问题。