Ruby 如何将带有符号和的字符串放入带有Nokogiri的xml文件中?
我试图在XML文件中包含一个图像的URL,URL查询字符串中的符号被去掉:Ruby 如何将带有符号和的字符串放入带有Nokogiri的xml文件中?,ruby,xml,nokogiri,cdata,Ruby,Xml,Nokogiri,Cdata,我试图在XML文件中包含一个图像的URL,URL查询字符串中的符号被去掉: bgdoc.xpath('//Master').each do |elem| part = elem.xpath('Part').inner_text image = imagehash[part] image = "" if image.blank? elem.xpath('Image').first.content = "<![CDATA[#{image}]]>" puts elem.
bgdoc.xpath('//Master').each do |elem|
part = elem.xpath('Part').inner_text
image = imagehash[part]
image = "" if image.blank?
elem.xpath('Image').first.content = "<![CDATA[#{image}]]>"
puts elem.xpath('Image').first.content
end
bgdoc.xpath('//Master')。每个do | elem|
part=elem.xpath('part')。内部文本
image=imagehash[部分]
image=”“如果image.blank?
elem.xpath('Image').first.content=“”
将elem.xpath('Image').first.content放在第一位
结束
bgdoc稍后将在生成器的帮助下写出。但不是单个元素,而是一次插入所有元素。这与SO上发布的类似问题不同。您是否尝试用其xml/html字符代码替换符号?它应该是有效的 符号和的代码为:
&代码>
您应该使用创建CDATA节点,然后将其添加到文档中,只需为内容
分配一个字符串,您就可以使用!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.xpath('//Image').first.content = '<![CDATA[/where?is=pan&cakes=house]]>'
bgdoc.xpath('//Image')。first.content=''
然后您会得到以下XML:
<?xml version="1.0"?>
<Master>
<Image><![CDATA[/where?is=pan&cakes=house]]></Image>
<Image/>
</Master>
![CDATA[/where?is=pan&;cakes=house]]
这甚至没有CDATA节点。这里真正的问题是AKWF实际上并没有向文档中添加CDATA节点,他们只是添加一个字符串,该字符串将被XML编码以转义
,以及&
。使用&
而不是&
将产生&;amp代码>在XML中。这正是发生的情况。
<?xml version="1.0"?>
<Master>
<Image><![CDATA[/where?is=pan&cakes=house]]></Image>
<Image/>
</Master>