如何使用Nokogiri :: XML :: Builder将非转义的&符号添加到HTML [英] How to add non-escaped ampersands to HTML with Nokogiri::XML::Builder

查看:200
本文介绍了如何使用Nokogiri :: XML :: Builder将非转义的&符号添加到HTML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在Nokogiri中使用XML Builder添加诸如项目符号•的HTML,但是一切正在被转义。如何防止它被转义?

I would like to add things like bullet points "•" to HTML using the XML Builder in Nokogiri, but everything is being escaped. How do I prevent it from being escaped?

我希望结果是:

<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

p>

yields

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

 

PS 这是一个解决方法,对于一个干净的解决方案,请参考 libxml2 文档(Nokogiri是建立在libxml2上)以获得更多帮助。然而,即使这些人承认处理实体可能相当..,有时候繁琐

PS this a workaround only, for a clean solution please refer to the libxml2 documentation (Nokogiri is built on libxml2) for more help. However, even these folks admit that handling entities can be quite ..err, cumbersome sometimes.

这篇关于如何使用Nokogiri :: XML :: Builder将非转义的&符号添加到HTML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆