私は個人的なプロジェクトに取り組んでおり、Rails を使用してフレームワークを学習しています。このプロジェクトは音楽ベースで、ChartLyrics.com の API を使用して歌詞を取得しています。API は XML を返しますが、XML から実際の歌詞要素を抽出するのに問題があります。
XML の解析に役立つ Nokogiri gem をインストールしました。以下は、データを取得するために使用しているものです。Rails コンソールから:
doc = Nokogiri::XML(open(http://api.chartlyrics.com/apiv1.asmx/SearchLyricDirect?artist=michael%20jackson&song=bad))
puts doc
<?xml version="1.0" encoding="utf-8"?>
<GetLyricResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://api.chartlyrics.com/">
<TrackId>0</TrackId>
<LyricChecksum>a4a56a99ee00cd8e67872a7764d6f9c6</LyricChecksum>
<LyricId>1710</LyricId>
<LyricSong>Bad</LyricSong>
<LyricArtist>Michael Jackson</LyricArtist>
<LyricUrl>http://www.chartlyrics.com/28h-8gWvNk-Rbj1X-R7PXg/Bad.aspx</LyricUrl>
<LyricCovertArtUrl>http://ec1.images-amazon.com/images/P/B000CNET66.02.MZZZZZZZ.jpg</LyricCovertArtUrl>
<LyricRank>9</LyricRank>
<LyricCorrectUrl>http://www.chartlyrics.com/app/correct.aspx?lid=MQA3ADEAMAA=</LyricCorrectUrl>
<Lyric>
Because I'm bad (bad-bad), I'm bad, come on (really, really bad)
You know I'm bad (bad-bad), I'm bad, you know it (really, really bad)
You know I'm bad (bad-bad), I'm bad, you know it (really, really bad) you know
And the whole world has to answer right now
Just to tell you once again
</Lyric>
</GetLyricResult>
スペースを節約するために歌詞を短くしました。「歌詞」要素を抽出するにはどうすればよいですか? 私は次のすべてを試しました:
> lyrics = doc.xpath('//Lyric')
=> []
> lyrics = doc.xpath('/Lyric')
=> []
> lyrics = doc.xpath('//GetLyricResult/Lyric')
=> []
> lyrics = doc.xpath('//GetLyricResult//Lyric')
=> []
> lyrics = doc.xpath('/GetLyricResult/Lyric')
=> []
「歌詞」は毎回ゼロです。誰が私が間違っているのか教えてもらえますか? ありがとう