我正在使用带有xml文档的nokogiri,看起来像这样:
<songs>
<song>
<artist>Juana Molina</artist>
<album>Un Dia</album>
<track>8</track>
<title>Dar (Qué Difícil)</title>
<rating>5</rating>
<filename>\Juana Molina\Un Dia\08 - Juana Molina - Dar (Qué Difí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é Difícil).mp3
nodes = parser.root.xpath('//songs/song[filename="'+filename+'"]')
puts nodes
在xpath查询中表示转义字符的正确方法是什么?
答案 0 :(得分:1)
MRI版本1.8.x很难使用Unicode,但我们的想法应该是先取消你的字符串。
require 'cgi'
unscaped_str = CGI.unescapeHTML(File.read('songs.xml'))
我还认为您需要使用-KU运行irb或ruby以强制MRI使用unicode。
希望这有帮助。