2009-09-18 7 views
18

में एक मनमानी स्ट्रिंग को xml में कनवर्ट करें यदि मेरे पास कोई स्ट्रिंग है जिसमें '/', '&', आदि शामिल हैं ...) इसे सुरक्षित रूप से एक्सएमएल में कैसे परिवर्तित करें जिसे इस तरह संग्रहीत किया जा सकता है:रूबी

<myelement>mystring</myelement> 

क्या इसे सीडीएटीए होने की आवश्यकता है, या क्या मैं इसे आसानी से रूबी फ़ंक्शन का उपयोग करके परिवर्तित कर सकता हूं?

+0

की तरह क्या mystring? –

+0

क्षमा करें जोनास, मैंने टेक्स्ट में xml डाल दिया और इसे हटा दिया गया; सबक सीखा; इसे कोड ब्लॉक में रखना था ;-) – cmaughan

उत्तर

43

रूबी में 1.9.2 स्ट्रिंग्स में एक्सएमएल विशेष पात्रों से बचने के लिए, 'एन्कोड' विधि का उपयोग करें।

उदाहरण के लिए, यदि आपके पास: एक्सएमएल उपयोग विशेषताओं

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;" /> 

लिए एक्सएमएल पाठ उपयोग:

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

उत्पन्न करता है:

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

सीजीआई मॉड्यूल में एक escapeHTML विधि है।

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

मुझे लगता है कि एचटीएमएल से बचने के तरीकों के बजाय एक्सएमएल से बचने के लिए विशेष रूप से बेहतर है। – 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

एक्सएमएल के साथ काम करने के लिए कहा जाता है REXML रूबी में एक पुस्तकालय है। यह आपके लिए आवश्यक हो सकता है कि यह उपयोगी हो सकता है। यहां एक ट्यूटोरियल का एक लिंक है। http://www.germane-software.com/software/rexml/docs/tutorial.html

+0

बेहतर होगा यदि प्रश्न को हल करने के लिए अधिक जानकारी प्रदान की जाती है। – soubunmei