gpt4 book ai didi

ruby - 我如何使用 Nokogiri 将带有&符号的字符串放入 xml 文件中?

转载 作者:数据小太阳 更新时间:2023-10-29 08:52:50 25 4
gpt4 key购买 nike

我试图在 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.xpath('Image').first.content
end

bgdoc 稍后会在 Builder 的帮助下编写出来。但不是单个元素,它是一次性全部插入的。这使得它与 SO 上发布的类似问题不同。

最佳答案

你应该使用 create_cdata创建一个 CDATA 节点,然后 add_child要将它添加到文档中,只需将字符串分配给 content 就会在 XML 中留下 <!CDATA...,这不是很有用。

一个简短的例子应该说明这个过程:

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>&lt;![CDATA[/where?is=pan&amp;cakes=house]]&gt;</Image>
<Image/>
</Master>

而且它甚至没有 CDATA 节点。

关于ruby - 我如何使用 Nokogiri 将带有&符号的字符串放入 xml 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8580803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com