如何使用Nokogiri获取XML中的前两个<quake>
数据?
数据按日期排列在DESCENDING ORDER(eq_date)中。
我已经获得了第一个<quake>
数据,但我计划使用前两(2)个最新进行显示。
<quakes>
<quake>
<eq_date>1449528341</eq_date>
<epicenter_code>191</epicenter_code>
<magnitude>39</magnitude>
</quake>
<quake>
<eq_date>1449505356</eq_date>
<epicenter_code>471</epicenter_code>
<magnitude>44</magnitude>
</quake>
<quake>
<eq_date>1449371999</eq_date>
<epicenter_code>797</epicenter_code>
<magnitude>42</magnitude>
</quake>
<quake>
<eq_date>1449293419</eq_date>
<epicenter_code>287</epicenter_code>
<magnitude>38</magnitude>
</quake>
and more.........
</quakes>
我会这样做:
require 'nokogiri'
doc = Nokogiri::XML(<<EOT)
<quakes>
<quake>
<eq_date>1449505356</eq_date>
<epicenter_code>471</epicenter_code>
<magnitude>44</magnitude>
</quake>
<quake>
<eq_date>1449505356</eq_date>
<epicenter_code>471</epicenter_code>
<magnitude>44</magnitude>
</quake>
<quake>
<eq_date>1449505356</eq_date>
<epicenter_code>471</epicenter_code>
<magnitude>44</magnitude>
</quake>
<quake>
<eq_date>1449505356</eq_date>
<epicenter_code>471</epicenter_code>
<magnitude>44</magnitude>
</quake>
and more.........
</quakes>
EOT
一旦文档被解析,就很容易找到所有出现的内容:
quakes = doc.search('quake')
quakes.size # => 4
然后很容易获取特定的:
quakes[0].to_xml # => "<quake>n <eq_date>1449505356</eq_date>n <epicenter_code>471</epicenter_code>n <magnitude>44</magnitude> n </quake>"
quakes[1].to_xml # => "<quake>n <eq_date>1449505356</eq_date>n <epicenter_code>471</epicenter_code>n <magnitude>44</magnitude> n </quake>"
或者,您可以迭代quakes
,它是一个NodeSet,其行为类似于Array。
已解决
我明白了,就凭索引。
@xmlData = Nokogiri::XML(open('/index.xml'))
@xmlData.css('quake')[0]
@xmlData.css('quake')[1]