我正在提出以下要求:
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中存在的东西。
答案 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