1

我目前正在向 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 请求成功地将错误计数和每个单独错误的所有原始数据打印到我的终端窗口,但我只希望它打印错误计数。

4

1 回答 1

0

API 文档显示错误总数是 XML 响应的顶级节点的属性,stories.

以 Nokogiri 为例,尝试替换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 回答