3
我正在使用Last.fm API,並試圖獲取關於某個用戶的大量信息並以xml格式返回。所以,這裏是我認爲呼叫:如何將xml文件加入/合併到單個文件並返回?
<%= form_tag fetch_user_path, :remote => true, :'data-type' => 'xml', :id => 'search' do %>
<%= text_field_tag :q %>
<% end %>
所以,你可以看到,該公司預計,XML,而且我正確處理使用jQuery回調。然後,在我的控制器:
# fetch_controller.rb
def user
username = params[:q].gsub(' ','+')
get_info_url = "http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=#{username}&api_key=#{API_KEY}"
get_friends_url = "http://ws.audioscrobbler.com/2.0/?method=user.getfriends&user=#{username}&api_key=#{API_KEY}"
respond_to do |format|
format.xml {
begin
@info = Nokogiri::XML(open(get_info_url))
@friends = Nokogiri::XML(open(get_friends_url))
rescue Exception => e
if e.message == '400 Bad Request'
render xml: { :error => 'User not found.' }, :status => 400
else
render xml: { :error => 'Connection to Last.fm failed.' }, :status => 500
end
else
# Here, I want to render @info + @friends!
render xml: @info
end
}
end
這樣一來,我在正確返回由get_info_url
返回的XML。但是,我想將xml加入由get_friends_url
返回的xml。我會怎麼做呢?
繼Ben Miller的回答之後,我在回調中收到一個parserror。我認爲這與兩個包含xml version
的xml文件有關。也許組合文件不?我看到的是,XML文件被連接起來,這裏是他們看如何使用console.log
:
Error: Invalid XML: <?xml version="1.0"?>
<Combined>
<UserInfo>
<?xml version="1.0" encoding="utf-8"??>
<lfm status="ok">
<user>
# lots of info about the user
</user>
</lfm>
</UserInfo>
<FriendInfo>
<?xml version="1.0" encoding="utf-8"??>
<lfm status="ok">
<friends for="user" page="1" perpage="50" totalpages="2" total="96">
# lots of info about the user's friends
</friends>
</lfm>
</FriendInfo>
</Combined>
我越來越近做到這一點!但是這仍然不是。看到我編輯的答案! – Ashitaka 2012-04-15 16:22:09
我更新了代碼示例。問題在於我們連接了完整的XML。我們只需要選擇你想要的節點。 – 2012-04-15 16:26:40
它的工作!雖然你有一個錯字。你有兩次'info_xml',第二次應該是'friends_xml'。無論如何,如果你能回答最後一個問題。 'at_xpath'和'xpath'有什麼不同?他們似乎可以互換。 – Ashitaka 2012-04-15 16:40:19