Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 从XML获取属性值_Ruby_Nokogiri - Fatal编程技术网

Ruby 从XML获取属性值

Ruby 从XML获取属性值,ruby,nokogiri,Ruby,Nokogiri,我有一块XML: 24588 TBS 关达尼加巴儿童基金会插曲 03x31 http://www.tvrage.com/shows/id-24588/episodes/1065228407 我正试图通过网络获取“我们到了吗?”。它实际上是“show”的“name”属性。我正在努力找出如何解析这个 xml.at_css('show')。值是我的最佳猜测,但不起作用。使用: require 'nokogiri' xml =<<EOT <show name="Are We Th

我有一块XML:


24588
TBS
关达尼加巴儿童基金会插曲
03x31
http://www.tvrage.com/shows/id-24588/episodes/1065228407
我正试图通过网络获取“我们到了吗?”。它实际上是“show”的“name”属性。我正在努力找出如何解析这个

xml.at_css('show')。值是我的最佳猜测,但不起作用。

使用:

require 'nokogiri'

xml =<<EOT
<show name="Are We There Yet?">
  <sid>24588</sid>
  <network>TBS</network>
  <title>The Kwandanegaba Children's Fund Episode</title>
  <ep>03x31</ep>
  <link>
    http://www.tvrage.com/shows/id-24588/episodes/1065228407
  </link>
</show>
EOT

xml = Nokogiri::XML(xml)
puts xml.at('show')['name']
=> Are We There Yet?
需要“nokogiri”

xml=您可以使用以下内容:

xml.at('//show/@name').text

这是一个XPath表达式,它从
show
元素返回
name
属性。

这很接近,但不太有效:
xml.at('//show/@name')
返回Nokogiri::xml::Attr,而不是文本
xml.at('//show/@name').value
返回
=>“我们到了吗?”
你说得对。我用
put
进行测试,它对它执行
操作。我个人更喜欢并推荐
Nokogiri.XML(…)
而不是
Nokogiri::XML(…)
,因为这有助于澄清这是一种奇怪的用法。另外,它减少了一个字符和两次按键(在我的键盘上)。我习惯使用
Nokogiri::XML
Nokogiri::HTML
。这是我几年前从他们的教程中学到的。我同意使用
符号更能说明它是一种方法,而不是一个常数。@Phrogz我和锡人是同一条船上的人,但由于你上面的评论(我也同意),我已经改用了这种风格。