CDATA в отдельной строке при генерации XML с рельсами. Нужно в той же строке - PullRequest
0 голосов
/ 16 апреля 2020

Я пытался интегрировать мои существующие блоги в новый канал третьей стороны. Я пытался сгенерировать пользовательский документ xml, используя rails builder. Вот файл blogs.rss.builder

xml.instruct!
xml.rss :version => '2.0', 'xmlns:atom' => 'http://www.w3.org/2005/Atom' do

    xml.channel do
        xml.title 'Sample Title'
        xml.description 'Sample Desc'
        xml.link "https://www.example.com/blog/"
        xml.language 'en'
        xml.tag! 'atom:link', :rel => 'self', :type => 'application/rss+xml', :href => "https://www.example.com/blogs.rss"
        xml.sy :updatePeriod, "hourly"
        xml.sy :updateFrequency, 1

        for blog in @blogs
            xml.item do |doc|
                doc.title blog['title']
                doc.link "https://www.example.com/blog/#{blog['slug']}"
                doc.media(:thumbnail, :url => "https:#{blog['cover']}")
                doc.pubDate(blog['created_at'])
                doc.modifiedDate(blog['updated_at'])
                xml.tag!("content:encoded") { xml.cdata!(blog['body']) }
            end
        end
    end
end

, который генерирует следующие

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sample Title</title>
    <description>Sample Desc</description>
    <link>https://www.example.com/blog/</link>
    <language>en</language>
    <atom:link rel="self" type="application/rss+xml" href="https://www.example.com/blogs.rss"/>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Sample Influence</title>
      <link>https://www.example.com/blog/sample-influence</link>
      <media:thumbnail url="https://assets.example.com/uploads/sample.png"/>
      <pubDate>2020-04-14T15:52:07.492Z</pubDate>
      <modifiedDate>2020-04-16T06:03:49.842Z</modifiedDate>
      <content:encoded>
        <![CDATA[Hello]]>
      </content:encoded>
    </item>
  </channel>
</rss>

Они sh

      <content:encoded>
        <![CDATA[Hello]]>
      </content:encoded>

be

      <content:encoded><![CDATA[Hello]]></content:encoded>

Помощь. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...