如何使用Nokogiri解析XML文档?

时间:2013-12-13 11:51:13

标签: ruby xml-parsing nokogiri

我正在尝试从Digital Trends解析RSS提要。我无法获得属性。例如,我需要在<enclosure>代码中获取图片的网址。

XML文件是:

<item>   
  <title>   
    Xbox One returns to Best Buy with five new holiday bundles
  </title>
  <link>
    http://www.digitaltrends.com/gaming/xbox-one-returns-best-buy-five-new-holiday-    bundles/
  </link>
  <pubDate>Thu, 12 Dec 2013 23:59:20 +0000</pubDate>
  <enclosure url="http://icdn7.digitaltrends.com/image/microsoft-xbox-one-review-system-v2-100x100-c.jpg" length="0" type="image/png"/>
</item>

我该怎么做?

3 个答案:

答案 0 :(得分:1)

xml = Nokogiri::XML(...)
item = xml.xpath('//item')
item.at('enclosure')['url']

xml = Nokogiri::XML(...)
item = xml.xpath('//item')
item.at('enclosure').attr('url')

第一个示例返回一个String,第二个示例返回表示字符串值的Nokogiri::XML::Attr实例。

当然,替换

Nokogiri::XML(...)

根据XML文档的来源进行适当的文档解析。

您可能需要阅读文章Searching an HTML / XML Document。更多详细信息也可在Nokogiri::XML::Node API文档中找到。

答案 1 :(得分:0)

尝试@doc.xpath("//enclosure")[0].attr("url"),假设您已将文档加载到@doc

答案 2 :(得分:0)

试试这段代码:

require 'nokogiri'

doc = Nokogiri::HTML IO.read( 'file.xml' )
e = doc.css( 'enclosure' )
puts e.attr( 'url' )