如何从PivotalTracker API中解析错误计数?

时间:2014-06-27 20:34:52

标签: ruby xml parsing nokogiri pivotaltracker

我目前正在向PivotalTracker API发出GET请求,以便根据错误严重程度获取给定项目的所有错误。我真正需要的只是错误的计数(即10个关键错误),但我目前正在以XML格式获取每个错误的所有原始数据。 XML数据在顶部有一个错误计数,但我必须向上滚动大量数据才能达到这个数量。

要解决此问题,我正在尝试解析XML以仅显示错误计数,但我不知道该怎么做。我已经尝试过Nokogiri和REXML,但看起来他们只能解析实际的XML文件,而不能解析HTTP GET请求中的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请求成功地将错误计数和每个错误的所有原始数据打印到我的终端窗口,但我只希望它打印错误计数。

1 个答案:

答案 0 :(得分:0)

The API documentation显示总错误数是XML响应的顶级节点stories的一个属性。

以Nokogiri为例,尝试用{/ p>替换print response.read_body

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

当然,您还需要在代码顶部添加require 'nokogiri'