在Ruby脚本中,我想更新CDATA内容,同时保持格式为CDATA。
doc = Nokogiri::XML(File.open('text.xml'))
doc.xpath('//Test').each do |test|
test.content = 'new string'
end
这是我的test.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Test><![CDATA[<p>Some content</p>]]></Test>
问题在我的文档CDATA
中转换为Text
。有什么办法可以保留CDATA
属性?
谢谢
答案 0 :(得分:0)
您的Nokogiri::XML::Element#content=
将用文本节点替换Test
的内容(并销毁曾经存在的所有内容)。您需要访问CDATA,然后在那个上运行content=
。例如:
doc.xpath('//Test').each do |test|
cdata = test.children.find(&:cdata?)
cdata.content = 'new string' if cdata
end
(如果您可以告诉XPath直接选择CDATA节点,那么会更直接,但是我不知道它可以做到这一点。)