Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用Nokogiri解析XML文档?_Ruby_Xml Parsing_Nokogiri - Fatal编程技术网

Ruby 如何使用Nokogiri解析XML文档?

Ruby 如何使用Nokogiri解析XML文档?,ruby,xml-parsing,nokogiri,Ruby,Xml Parsing,Nokogiri,我试图解析来自数字趋势的RSS提要。我无法获取属性。例如,我需要在标记中获取图像的URL 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-f

我试图解析来自数字趋势的RSS提要。我无法获取属性。例如,我需要在
标记中获取图像的URL

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>

Xbox One带着五个新的假日套餐重返百思买
http://www.digitaltrends.com/gaming/xbox-one-returns-best-buy-five-new-holiday-    捆/
2013年12月12日星期四23:59:20+0000
如何执行此操作?

请尝试
@doc.xpath(//附件”)[0].attr(“url”)
,假设您已将文档加载到
@doc
中,请尝试以下代码:

require 'nokogiri'

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

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

当然,更换

Nokogiri::XML(...)
根据XML文档的源进行适当的文档解析


你可能想读这篇文章。API文档中还提供了更多详细信息。

您尝试过什么?还是你希望我们为你写?详细介绍这一点,使之成为一项容易的工作。“询问代码的问题必须表明对正在解决的问题的最低理解。包括尝试的解决方案、为什么它们不起作用以及预期的结果。另请参见:“这是RSS。不要手动解析它。使用RSS解析器。根据我的经验,这基本上是重复的,即使是RSS解析器也不能解析真实世界的RSS,因为它是一个被滥用的规范。加入ATOM和RDF,它需要一个手动解析器。从一个罐装的开始,看看它是否有效,但是如果它在简单的提要之外失败了,不要感到惊讶。@theTinMan
需要“rubygems”
需要“nokogiri”
需要“openuri”
doc=nokogiri::XML(open('http://www.digitaltrends.com/feed/)
doc.xpath(“//item”).每一个都在xpath('./title')。内容
pt.at xpath('./description')。内容
pt.at xpath('./description')。内容
pt.at xpath('./publidate')。内容
pt.at css('enclosure')
结束
小心
项。在('enclosure')。第一个
at
返回单个节点,而不是节点集,并且节点没有
first
方法<代码>项目。搜索('enclosure')。首先会起作用。我的错是,我最初使用了
css
,后来改为
at
。我修正了密码,谢谢。
xml = Nokogiri::XML(...)
item = xml.xpath('//item')
item.at('enclosure').attr('url')
Nokogiri::XML(...)