在 Ruby 脚本中,我想更新 CDATA 内容,同时将格式保留为 CDATA。
doc = Nokogiri::XML(File.open('text.xml'))
doc.xpath('//Test').each do |test|
test.content = 'new string'
end
这是我的测试.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Test><![CDATA[<p>Some content</p>]]></Test>
问题是,在我的文档中,CDATA
转换为Text
.有什么方法可以保留CDATA
财产吗?
谢谢
您的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 节点会更直接,但我不知道它是否可以做到这一点。