2009-09-18 10 views
18

「/」、「&」などの文字を含む文字列があれば、どのようにしてXMLに安全に変換できますか?任意の文字列をルビーのxmlに変換する

<myelement>mystring</myelement> 

CDATAである必要がありますか、それとも簡単にルビ関数を使用して変換できますか?

+0

好きなもののMyString? –

+0

申し訳ありません、Jonas、私はテキストにxmlを入れて、削除されました。学んだ教訓;コードブロックに配置する必要がありました;-) – cmaughan

答えて

43

Ruby 1.9.2では、文字列のXML特殊文字をエスケープするには、 'encode'メソッドを使用してください。 XMLは使用属性

my_string = 'this is "my" complicated <String>' 

について:

例は、あなたが持っている場合

"<node attr=#{my_string.encode(:xml => :attr)} />" 

は生成:

<node attr="this is &quot;my&quot; complicated &lt;String&gt;" /> 

についてはXMLテキスト使用を:

"<node>#{my_string.encode(:xml => :text)}</node>" 

は生成:

<node>this is "my" complicated &lt;String&gt;</node> 
5

CGIモジュールにはescapeHTMLメソッドがあります。

CGI.escapeHTML("&<>") 
#=> "&amp;&lt;&gt;" 
+0

HTMLエスケープメソッドではなくXMLエスケープを使用する方がよいと思います。 – fatuhoku

6
require 'rexml/document' 
doc = REXML::Document.new 
root = doc.add_element "Alpha" 
root.add_text "now is & the <time> ' for \" me" 
doc.write 

が生成されます

<Alpha>now is &amp; the &lt; time &gt; &apos; for &quot; me</Alpha> 
0

は、XMLを扱うためのREXMLと呼ばれるルビーでライブラリがあります。 これは必要なものに役立つかもしれません。ここにチュートリアルへのリンクがあります。 http://www.germane-software.com/software/rexml/docs/tutorial.html

+0

は、問題を解決するために提供されたより詳細な方が良いでしょう。 – soubunmei

関連する問題