如何使用Nokogiri :: XML :: Builder将未转义的&符号添加到HTML

前端之家收集整理的这篇文章主要介绍了如何使用Nokogiri :: XML :: Builder将未转义的&符号添加到HTML 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想使用Nokogiri中的XML Builder向HTML添加项目符号点“•”之类的东西,但是所有内容都被转义了.如何防止它逃脱?

我希望结果是:

<span>&#8226;</span> 

而不是:

<span>&amp;#8226;</span> 

我只是在这样做:

xml.span { 
  xml.text "&#8226;\ " 
}

我想念什么?

最佳答案
如果您定义

  class Nokogiri::XML::Builder
    def entity(code)
      doc = Nokogiri::XML("<?xml version='1.0'?><root>&##{code};</root>")
      insert(doc.root.children.first)
    end
  end

然后这个

  builder = Nokogiri::XML::Builder.new do |xml|
    xml.span {
      xml.text "I can has "
      xml.entity 8665
      xml.text " entity?"
    }
  end
  puts builder.to_xml

产量

<?xml version="1.0"?>
<span>I can has &#x2022; entity?</span>

PS仅是一种解决方法,有关干净的解决方案,请参阅libxml2文档(Nokogiri基于libxml2构建)以获取更多帮助.但是,即使是这些人admit that handling entities can be quite ..err,cumbersome sometimes.

猜你在找的HTML相关文章