1

创建用户后,我正在使用 Nokogiri 解析从 roar 引擎获取的 XML 数据。XML 如下所示:

<roar tick="135098427907">
  <facebook>
    <create_oauth status="ok">
      <auth_token>14802206136746256007</auth_token>
      <player_id>8957881063899628798</player_id>
    </create_oauth>
   </facebook>
</roar>

我对 Nokogiri 完全陌生。如何获得status,auth_token和的值player_id

4

3 回答 3

2
str = "<roar ......"
doc = Nokogiri.XML(str)
puts doc.xpath('//create_oauth/@status')  # => ok
puts doc.xpath('//auth_token').text       # => 148....
# player_id is the same as auth_token

从w3schools向您学习一些好的 xpath 是一个好主意。

于 2012-10-23T09:45:56.607 回答
2

这个怎么样

h1 = Nokogiri::XML.parse %{
    <roar tick="135098427907">
  <facebook>
    <create_oauth status="ok">
      <auth_token>14802206136746256007</auth_token>
      <player_id>8957881063899628798</player_id>
    </create_oauth>
   </facebook>
</roar>
}


h1.xpath("//facebook/create_oauth/auth_token").text()
h1.xpath("//facebook/create_oauth/player_id").text()
于 2012-10-23T09:47:12.653 回答
2

您可以使用紫菜宝石。它是一个 xml 到哈希的转换器,在 ruby​​ 中访问哈希非常方便

require 'nori'

Nori.parser = :nokogiri

xml = "<roar tick='135098427907'>
           <facebook>
               <create_oauth status='ok'>
                   <auth_token>14802206136746256007</auth_token>
                   <player_id>8957881063899628798</player_id>
               </create_oauth>
           </facebook>
      </roar>"

hash = Nori.parse(xml)
create_oauth = hash["roar"]["facebook"]["create_oauth"]

puts create_oauth["auth_token"] # 14802206136746256007
puts create_oauth["@status"]    # ok
puts create_oauth["player_id"]  # 8957881063899628798
于 2012-10-23T09:57:02.870 回答