2009-09-05 4 views
4
나는 이런 식으로 뭔가 보이는 XML 문서로 노코 기리 사용하고

에 대한 XPath 식의 탈출 문자를 처리하는 방법 : 나는 문자를 탈출 포함 노래를 찾을 때노코 기리

<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> 

을, 난 몰라 다시 (에 관계없이 내가 할 또는 쿼리에 사용되는 파일 이름 문자열을 탈출하지 않는 경우의)

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 쿼리 이스케이프 문자를 표현하는 올바른 방법은 무엇인가를 다음 XPath 쿼리와 아무것도 얻을?

+0

효과가 있습니까? 이미 이것에 대한 해결책이 있습니까? 제발 공유 – Jirapong

답변

1

MRI 버전 1.8.x에서 유니 코드를 사용하는 것은 어렵지만 문자열을 먼저 이스케이프 처리해야합니다.

require 'cgi' 

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

나는 또한 IRB 실행하거나 유니 코드를 사용하는 MRI를 강제하기 위해 -KU와 루비해야합니다 생각합니다.

희망이 도움이됩니다.

관련 문제