簡體   English   中英

解析XML HTTParty響應

[英]Parsing XML HTTParty response

我正在使用HTTParty從api獲取數據。 我設法取回了XML響應,看起來HTTParty已將該xml響應轉換為Ruby。

如何瀏覽哈希並獲取所需的數據? 例如,說我想要“名稱”,即“ 29TH AVENUE STN / ARBUTUS”。

該API密鑰工作正常,因為我收到了回復。

只是不太確定如何導航並獲取所需的數據,並將其放入我的視圖中。

index.html.erb:

<% @courses.each do |course| %>
<%= course %>

<% end %>

HTTparty回應:

["Route", {
"RouteNo" => "016", "Name" => "29TH AVENUE STN/ARBUTUS ", "OperatingCompany" => "CMBC", "Patterns" => {
    "Pattern" => [{
        "PatternNo" => "E5TP", "Destination" => "29TH AVE STN", "RouteMap" => {
            "Href" => "http://nb.translink.ca/geodata/trip/016-E5TP.kmz"
        }, "Direction" => "EAST"
    }, {
        "PatternNo" => "EB1", "Destination" => "29TH AVE STN", "RouteMap" => {
            "Href" => "http://nb.translink.ca/geodata/trip/016-EB1.kmz"
        }, "Direction" => "EAST"
    }, {
        "PatternNo" => "EB5", "Destination" => "29TH AVE STN", "RouteMap" => {
            "Href" => "http://nb.translink.ca/geodata/trip/016-EB5.kmz"
        }, "Direction" => "EAST"
    }]
}
}]

獲得響應的模型

class Checker

include HTTParty

base_uri 'http://api.translink.ca/rttiapi/v1/routes'
default_params apikey: "[my proper api key]"
format :xml

def self.for term
  get("", query: {stopNo: term})["Routes"]["Route"]["RouteNo"]
  end
end

模型控制器

  class TimesController < ApplicationController
  def index
    @search_term = '51048'
    @courses = Checker.for(@search_term)
  end
end

假設您顯示了一個響應:

resp = ["Route", {
"RouteNo" => "016", "Name" => "29TH AVENUE STN/ARBUTUS ", "OperatingCompany" => "CMBC", "Patterns" => {
    "Pattern" => [{
        "PatternNo" => "E5TP", "Destination" => "29TH AVE STN", "RouteMap" => {
            "Href" => "http://nb.translink.ca/geodata/trip/016-E5TP.kmz"
        }, "Direction" => "EAST"
    }, {
        "PatternNo" => "EB1", "Destination" => "29TH AVE STN", "RouteMap" => {
            "Href" => "http://nb.translink.ca/geodata/trip/016-EB1.kmz"
        }, "Direction" => "EAST"
    }, {
        "PatternNo" => "EB5", "Destination" => "29TH AVE STN", "RouteMap" => {
            "Href" => "http://nb.translink.ca/geodata/trip/016-EB5.kmz"
        }, "Direction" => "EAST"
    }]
}
}]

依次由兩個元素組成的數組,第一個是“ Route”,最后一個是具有所有屬性的哈希,要簡單地使用該名稱即可:

resp.last['Name']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM