如何使用 Ruby 中的 Nokogiri gem 在 XML 中获取特定数量的数据
How can I get specific number of data in XML using Nokogiri gem in Ruby
如何使用 Nokogiri 获取 XML 中的前两个 <quake>
数据?
数据按降序排列 (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>
已解决
我知道了,按索引获取即可。
@xmlData = Nokogiri::XML(open('/index.xml'))
@xmlData.css('quake')[0]
@xmlData.css('quake')[1]
我会这样做:
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,其行为类似于数组。
如何使用 Nokogiri 获取 XML 中的前两个 <quake>
数据?
数据按降序排列 (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>
已解决
我知道了,按索引获取即可。
@xmlData = Nokogiri::XML(open('/index.xml'))
@xmlData.css('quake')[0]
@xmlData.css('quake')[1]
我会这样做:
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,其行为类似于数组。