Подтвердить что ты не робот

Преобразование произвольной строки в xml в ruby

Если у меня есть строка, которая может содержать любые символы (включая "/", "&" и т.д.), как безопасно преобразовать ее в XML, который можно сохранить следующим образом:

<myelement>mystring</myelement>

Нужно ли быть CDATA, или я могу легко преобразовать его с помощью функции ruby?

4b9b3361

Ответ 1

В Ruby 1.9.2 для исключения специальных символов XML в Strings используйте метод encode.

Пример, если у вас есть:

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

Для атрибутов XML используйте:

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

Ответ 2

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>

Ответ 3

Модуль CGI имеет метод escapeHTML.

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

Ответ 5

Этот ответ в основном для Rails, но, тем не менее, может быть полезен. Я посмотрел, как работает rails .to_xml и выяснил, что вы можете использовать Builder::XChar#encode из Builder::XChar#encode builder.

Builder::XChar.encode(%(this is "my" complicated <String>\v))
#=> "this is \"my\" complicated &lt;String&gt;�"