ノコギリのXMLビルダを使って、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 に基づいて構築されています) を参照してください。ただし、これらの人々でさえ、エンティティの処理が非常に面倒な場合があることを認めています。
要素のテキストを設定するとき、実際には HTML ソースではなくテキストを設定しています。<
プレーンテキストでは特別な意味はあり&
ません。
したがって、箇条書きを入力してください: '•'
. もちろん、ソース コードと XML ファイルが同じエンコーディングを使用している必要があります。XML ファイルが UTF-8 であるのにソース コードがそうでない場合'\xe2\x80\xa2'
、文字列リテラルとしての黒丸文字の UTF-8 バイト シーケンスを指定する必要があります。
(一般に、Ruby 1.8 の非 ASCII 文字は注意が必要です。バイトベースのインターフェイスは、すべてテキストが Unicode である XML の世界とうまく噛み合いません。)