如何更改单个标记以将CDATA包含在ruby中的to_xml中?

时间:2018-07-06 08:06:33

标签: ruby xml activesupport

Tl; dr:如何在CDATA中使用to_xml在某些标签中添加ActiveSupport::XmlMini块而不添加新行?

从昨天开始,我坐下来,尝试在我的一个脚本中猴子ActiveSupport::XmlMini.to_tag(key, value, options)补丁,为哈希中的某些配对创建CDATA块。 它无需任何修改即可创建:

<external_tag>SOME_INTERNAL_THINGS</external_tag>

我设法制作了以以下内容结尾的猴子补丁:

<external_tag>
    <![CDATA[SOME_INTERNAL_THINGS]]>
</external_tag>

现在的问题是,我真的很想强迫它在XML文件中仅使用一行。下面的代码是到目前为止我对to_tag(key, value, options)所做的更改。

if (CDATA_TAGS.include?(key))
    # We should change something here to avoid creation of additional new lines.
    options[:builder].tag!(key, attributes) { options[:builder].cdata!(formatted_value) }
else
    options[:builder].tag!(key, formatted_value, attributes)
end

因此理想情况下,最终版本应为:

<external_tag><![CDATA[SOME_INTERNAL_THINGS]]></external_tag>

自动取款机。对于此脚本,我使用ruby 2.3.7ActiveSupport 4.2.10

编辑(2018年7月6日星期五11:08): 我已经设法用Nokogiri在脚本中添加了另一个步骤来实现这一点,但是我仍然对是否有办法更改此猴子补丁感兴趣,因此它不会在一开始就在其中添加这些换行符仍然很感兴趣。

0 个答案:

没有答案