如何保存从API获得的XML页面中的信息?
URL为"http://api.url.com?number=8-6785503",并返回:
<OperatorDataContract xmlns="http://psgi.pts.se/PTS_Number_Service" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Name>Tele2 Sverige AB</Name>
<Number>8-6785503</Number>
</OperatorDataContract>
如何将Name
和Number
节点解析为文件?
这是我的代码:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
url = "http://api.url.com?number=8-6785503"
doc = Nokogiri::XML(open(url))
File.open("exporterad.txt", "w") do |file|
doc.xpath("//*").each do |item|
title = item.xpath('//result[group_name="Name"]')
phone = item.xpath("/Number").text.strip
puts "#{title} ; n"
puts "#{phone} ; n"
company = " #{title}; #{phone}; nn"
file.write(company.gsub(/^s+/,''))
end
end
除了你的代码不是有效的Ruby之外,你还让它变得比必要的要困难得多,至少对于一个简单的刮取和保存来说:
require 'nokogiri'
require 'open-uri'
url = "http://api.pts.se/PTSNumberService/Pts_Number_Service.svc/pox/SearchByNumber?number=8-6785503"
doc = Nokogiri::XML(open(url))
File.open("exported.txt", "w") do |file|
name = doc.at('Name').text
number = doc.at('Number').text
file.puts name
file.puts number
end
运行它会产生一个名为"exported.txt"的文件,其中包含:
Tele2 Sverige AB
8-6785503
您可以根据需要在此基础上进行扩展。