在Ruby中解析http响应

时间:2014-07-25 12:49:41

标签: ruby xml parsing

我正在提出以下要求:

  uri = URI.parse(url)
  session = Net::HTTP.new(uri.host, uri.port)
  headers = {}
  res = session.start do |http|
    http.get(request_url, headers)
  end

响应如下:

<string xmlns="http://xxx">
    some string
</string>

是否有一些解决上述响应的快速解决方案并获得some string。我可以使用正则表达式来获取它,但我想使用Ruby中存在的东西。

3 个答案:

答案 0 :(得分:1)

正如Arup Rakshit评论的那样,使用nokogiri来解析xml:

require 'nokogiri'

res = <<EOS
<string xmlns="http://xxx">
    some string
</string>
EOS

root = Nokogiri.parse(res)
root.at_xpath('.//*[local-name()="string"]').text.strip  # Using xpath
# => "some string"
root.at_css('string').text.strip  # Using css selector
# => "some string"

答案 1 :(得分:1)

使用任何XML解析器。例如,nokogiri:

require 'nokogiri'
n = Nokogiri::HTML::parse response
parsed_string = n.xpath('//string').text

答案 2 :(得分:0)

您可以使用REXML或SimpleXML解析该XML,并获取该字符串。

我更喜欢SimpleXML。

样品

data['Result'].each do |item|
   item.sort.each do |k, v|
      if ["Title", "Url"].include? k
         print "#{v[0]}" if k=="Title"
         print " => #{v[0]}\n" if k=="Url"
      end
   end
end

https://developer.yahoo.com/ruby/ruby-xml.html