2012-10-17 3 views
0

기본적으로 ChartLyrics API에 대한 응답에서 Lyric 태그를 얻으려고합니다. 필자가 작성한 코드는 다음과 같습니다.레일 : Nokogiri를 사용하여 XML 응답을 구문 분석 할 수 없습니다.

require 'nokogiri' 
require 'open-uri' 

request = Net::HTTP.get(URI.parse('http://api.chartlyrics.com/apiv1.asmx/GetLyric?lyricId=1710&lyricCheckSum=a4a56a99ee00cd8e67872a7764d6f9c6')) 
puts request 
response = Nokogiri::XML(request) 

puts response.xpath("//Lyric")[0].to_s 

설명서를 읽었지만 답변을 찾지 못했습니다. 내가 여기서 뭘 잘못하고 있니?

답변

1

는 아래의 코드

require 'open-uri' 
require 'nokogiri' 
xml_doc = Nokogiri::XML(open('http://api.chartlyrics.com/apiv1.asmx/GetLyric?lyricId=1710&lyricCheckSum=a4a56a99ee00cd8e67872a7764d6f9c6')) 
#I always prefer css than xpath 
lyrics = xml_doc.css('Lyric') 
if lyrics.empty? 
    puts "COuld not find any lyric in the XML document' 
else 
    puts lyrics[0].to_s 
end 
+0

감사합니다. 한 번만 더 질문합니다. lyrics 매개 변수에서 "Lyric"태그를 제거 할 수 있습니까? – Ali

+0

죄송합니다, 찾을 수 없습니까? –

+0

문제 없습니다. 나는 그것을 고쳤다. 응답 해 주셔서 감사합니다. – Ali

1

response.remove_namespaces를 수행을보십시오! response.xpath

관련 문제