4

次のようなxmlドキュメントでnokogiriを使用しています。

<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クエリでエスケープ文字を表現する正しい方法は何ですか?

4

1 に答える 1