如何访问元素

时间:2015-11-20 19:58:49

标签: ruby ruby-on-rails-4 nokogiri

我是初学Rails开发人员。我尝试了所有Stack Overflow的答案,但我没有成功。

我的Nokogiri元素是:

#<Nokogiri::XML::Element:0x3ff66cdbf144 name="busstop" attributes=[#<Nokogiri::XML::Attr:0x3ff66cdbf0a4 name="id" value="7c7b5df6-1657-11e5-94a5-00235443ce54">, #<Nokogiri::XML::Attr:0x3ff66cdbf07c name="name" value=" Еманжелинск">, #<Nokogiri::XML::Attr:0x3ff66cdbf068 name="region" value="Челябинская Область мес">, #<Nokogiri::XML::Attr:0x3ff66cdbf054 name="automated">]>

我需要访问:

attributes=[#<Nokogiri::XML::Attr:0x3ff66cdbf0a4 name="id" value="7c7b5df6-1657-11e5-94a5-00235443ce54">, #<Nokogiri::XML::Attr:0x3ff66cdbf07c name="name" value=" Еманжелинск">, #<Nokogiri::XML::Attr:0x3ff66cdbf068 name="region" value="Челябинская Область мес">

我试过这些:

stop.attribute("attributes")
stop.xpath("//busstop//attributes")
stop.xpath("//busstop//attributes/*")
stop[:attributes]
stop["attributes"]
stop.attributes

stop是简单each循环的临时变量。

我看到属性是另一个Nokogiri哈希。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

不确定您的问题是什么,但应该这样:

stop.attributes # returns something like {id: "...", name: "Еманжелинск"...}

stop.attribute_nodes # returns something like [#<Nokogiri::XML::Attr:0x3ff66cdbf0a4 ...]

stop.attribute['name'] # returns "Еманжелинск"

如果stop.attributes不起作用,请检查stop变量的类别,可能既不是Nokogiri::XML::Node,也不是Nokogiri::XML::Element。同时检查stop实际上是否为<busstop>元素(其name应返回'busstop')。