Ruby Builder - вывод XML кодирует сущности HTML
У меня есть небольшой скрипт ruby, который использует Builder.
require 'rubygems'
require 'builder'
content = <<eos
SOME TEXT, GOES TO UPPERCASE
other text
<em>italics<em>
eos
xml = Builder::XmlMarkup.new
xml.instruct! :xml, :version => '1.0'
xml.book :id => 1.0 do
xml.keyPic "keyPic1.jpg"
xml.parts do
xml.part :partId => "1", :name => "name" do
xml.chapter :title => "title", :subtitle => "subtitle" do
xml.text content
end
end
end
end
p xml
При запуске из CLI (Cygwin) я получаю следующее:
<?xml version="1.0" encoding="UTF-8"?>
<book id="1.0">
<keyPic>keyPic1.jpg</keyPic>
<parts>
<part partId="1" name="name">
<chapter title="title" subtitle="subtitle">
<text>
SOME TEXT, GOES TO UPPERCASE
other text
<em>italics<em>
</text>
</chapter>
</part>
</parts>
</book><inspect/>
Тем не менее, вывод, который я хотел бы между:
<text>
SOME TEXT, GOES TO UPPERCASE
other text
<em>italics<em/>
</text>
Я пытался использовать гем htmlentities 'расшифровывать' контент, но безрезультатно.
1 ответ
Решение
Использовать <<
операция вставки вашего текста без изменений.
xml.text do |t|
t << content
end