我目前正在向PivotalTracker API发出GET请求,以便按bug严重程度获取给定项目的所有bug。我真正需要的只是计算bug (即10个关键错误),但我目前正在以XML格式获取每个bug的所有原始数据。XML数据的顶部有一个bug计数,但是我必须滚动大量的数据才能达到这个值。
为了解决这个问题,我试图解析XML以只显示bug计数,但我不知道如何做到这一点。我对Nokogiri和REXML进行了实验,但它们似乎只能解析实际的XML文件,而不能解析来自HTTP请求的XML。
下面是我的代码(出于安全原因,将访问令牌替换为*s):
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请求成功地将每个bug的bug计数和所有原始数据打印到我的终端窗口,但我只希望它打印bug计数。
发布于 2014-06-27 22:18:02
API文档显示总bug计数是XML响应的顶级节点stories的一个属性。
以Nokogiri为例,尝试将print response.read_body替换为
xml = Nokogiri::XML.parse(response.body)
puts "Bug count: #{xml.xpath('/stories/@total')}"当然,您还需要在代码的顶部添加require 'nokogiri'。
https://stackoverflow.com/questions/24460367
复制相似问题