gpt4 book ai didi

xml - 如何处理 Nokogiri 的 XPath 表达式中的转义字符

转载 作者:数据小太阳 更新时间:2023-10-29 02:13:29 26 4
gpt4 key购买 nike

我正在使用 nokogiri 和一个看起来像这样的 xml 文档:

<songs>
<song>
<artist>Juana Molina</artist>
<album>Un Dia</album>
<track>8</track>
<title>Dar (Qu&#233; Dif&#237;cil)</title>
<rating>5</rating>
<filename>\Juana Molina\Un Dia\08 - Juana Molina - Dar (Qu&#233; Dif&#237;cil).mp3</filename>
</song>
<songs>

当我尝试查找包含转义字符的歌曲时,使用以下 xpath 查询我没有得到任何结果(无论我是否对查询中使用的文件名字符串进行转义)

file = File.new("songs.xml")
parser = Nokogiri::XML(file)

filename = "\Juana Molina\Un Dia\08 - Juana Molina - Dar (Qué Difícil).mp3"

xm = Builder::XmlMarkup.new
filename = xm.text! filename
# => \Juana Molina\Un Dia\08 - Juana Molina - Dar (Qu&#233; Dif&#237;cil).mp3

nodes = parser.root.xpath('//songs/song[filename="'+filename+'"]')
puts nodes

在 xpath 查询中表示转义字符的正确方法是什么?

最佳答案

MRI 1.8.x 版本很难使用 Unicode,但想法应该是先对字符串进行转义。

require 'cgi'

unscaped_str = CGI.unescapeHTML(File.read('songs.xml'))

我还认为您需要使用 -KU 运行 irb 或 ruby​​ 以强制 MRI 使用 unicode。

希望这对您有所帮助。

关于xml - 如何处理 Nokogiri 的 XPath 表达式中的转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1384486/

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