Вы должны использовать create_cdata
для создания узла CDATA, а затем add_child
, чтобы добавить его в документ, просто присвоив строку для content
, вы оставите васс <!CDATA...
в вашем XML, и это не очень полезно.
Краткий пример должен иллюстрировать процесс:
xml = '<Master><Image></Image><Image></Image></Master>'
bgdoc = Nokogiri::XML(xml)
cdata = bgdoc.create_cdata('/where?is=pan&cakes=house')
bgdoc.xpath('//Image').first.add_child(cdata)
Затем, если вы bgdoc.to_xml
, вы получите что-то вроде этого:
<?xml version="1.0"?>
<Master>
<Image><![CDATA[/where?is=pan&cakes=house]]></Image>
<Image/>
</Master>
Я думаю, что именно такой результат вы ищете.Однако, если вы просто назначите строку для content
:
bgdoc.xpath('//Image').first.content = '<![CDATA[/where?is=pan&cakes=house]]>'
Тогда вы получите этот XML:
<?xml version="1.0"?>
<Master>
<Image><![CDATA[/where?is=pan&cakes=house]]></Image>
<Image/>
</Master>
, который даже не имеет узла CDATA.