我想使用Nokogiri中的XML Builder向HTML添加项目符号点“•”之类的东西,但是所有内容都被转义了.如何防止它逃脱?
我希望结果是:
<span>•</span>
而不是:
<span>&#8226;</span>
我只是在这样做:
xml.span {
xml.text "•\ "
}
我想念什么?
最佳答案
如果您定义
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 • entity?</span>
PS仅是一种解决方法,有关干净的解决方案,请参阅libxml2文档(Nokogiri基于libxml2构建)以获取更多帮助.但是,即使是这些人admit that handling entities can be quite ..err,cumbersome sometimes.