1

現在、Pivo​​talTracker API に GET リクエストを発行して、特定のプロジェクトのすべてのバグをバグの重大度別に取得しています。私が本当に必要としているのはバグの数 (つまり、10 個の重大なバグ) だけですが、現在、各バグのすべての生データを XML 形式で取得しています。XML データの上部にはバグ カウントがありますが、そのカウントに到達するには大量のデータをスクロールする必要があります。

この問題を解決するために、XML を解析してバグ カウントのみを表示しようとしていますが、その方法がわかりません。Nokogiri と REXML を試してみましたが、HTTP GET 要求からの XML ではなく、実際の XML ファイルしか解析できないようです。

これが私のコードです(セキュリティ上の理由から、アクセストークンは * に置き換えられています):

require 'net/http'
require 'rexml/document'

prompt = '> '
puts "What is the id of the Project you want to get data from?"
print prompt
project_id = STDIN.gets.chomp()
puts "What type of bugs do you want to get?"
print prompt
type = STDIN.gets.chomp()


def bug(project_id, type)
  net = Net::HTTP.new("www.pivotaltracker.com")
  request = Net::HTTP::Get.new("/services/v3/projects/#{project_id}/stories?filter=label%3Aqa-#{type}")
  request.add_field("X-TrackerToken", "*******************")
  net.read_timeout = 10
  net.open_timeout = 10

  response = net.start do |http|
    http.request(request)
  end
  puts response.code
  print response.read_body
end

bug(project_id, type)

私が言ったように、GET リクエストはバグ カウントと個々のバグのすべての生データをターミナル ウィンドウに正常に出力していますが、バグ カウントだけを出力したいのです。

4

1 に答える 1

0

API ドキュメントによると、合計バグ数は XML 応答の最上位ノード の属性ですstories

のこぎりを例にprint response.read_body

xml = Nokogiri::XML.parse(response.body)
puts "Bug count: #{xml.xpath('/stories/@total')}"

require 'nokogiri'当然、コードの先頭にも追加する必要があります。

于 2014-06-27T22:18:02.503 に答える