如何使用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代码中要想改变字体颜色,常常需要使用CSS样式表。CSS是...
HTML代码如何让字体盖住图片呢?需要使用CSS的position属性及...
HTML代码字体设置 在HTML中,我们可以使用标签来设置网页中的...
在网页设计中,HTML代码的字体和字号选择是非常重要的一个环...
HTML(Hypertext Markup Language,超文本标记语言)是一种用...
外链是指在一个网页中添加一个指向其他网站的链接,用户可以...