3

ノコギリのXMLビルダを使って、HTMLに箇条書き「・」のようなものを追加したいのですが、すべてエスケープされています。どうすれば漏れないようにできますか?

結果を次のようにしたいと思います。

<span>&#8226;</span> 

それよりも:

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

私はちょうどこれをやっています:

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

私は何が欠けていますか?

4

2 に答える 2

3

あなたが定義する場合

  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 に基づいて構築されています) を参照してください。ただし、これらの人々でさえ、エンティティの処理が非常に面倒な場合があることを認めています

于 2009-11-28T19:06:09.863 に答える
0

要素のテキストを設定するとき、実際には HTML ソースではなくテキストを設定しています。<プレーンテキストでは特別な意味はあり&ません。

したがって、箇条書きを入力してください: '•'. もちろん、ソース コードと XML ファイルが同じエンコーディングを使用している必要があります。XML ファイルが UTF-8 であるのにソース コードがそうでない場合'\xe2\x80\xa2'、文字列リテラルとしての黒丸文字の UTF-8 バイト シーケンスを指定する必要があります。

(一般に、Ruby 1.8 の非 ASCII 文字は注意が必要です。バイトベースのインターフェイスは、すべてテキストが Unicode である XML の世界とうまく噛み合いません。)

于 2009-11-28T12:52:07.510 に答える