0
我正在运行一个else循环遍历ruby中的XML文件,并将值分配给一个散列值。 XML文件中有3个项目,但由于某种原因,它只能通过第一个项目进行迭代,为什么?Else Loop只运行一次
require "nokogiri"
f= File.open("untitled.xml")
doc = Nokogiri::XML(f)
f.close
doc.xpath('//item').each do |node|
children = node.children
item = {
"name" => node['name'],
"buyItNowPrice"=> children.css('buytItNowPrice').inner_text,
"description" => children.css('description').inner_text,
"startingBidPrice" => children.css('startingBidPrice').inner_text,
"closing_time" => children.css('closing_time').inner_text,
"closing_date" => children.css('closing_date').inner_text
}
puts item
end
XML:
<item name = "Test Thing">
<description>Something Coolest.</description>
<buytItNowPrice>154.99</buytItNowPrice>
<startingBidPrice>9999.99</startingBidPrice>
<closing_date>2014-12-25</closing_date>
<closing_time>12:32:PM</closing_time>
</item>
<item name = "Lazer">
<description>Something Cool.</description>
<buytItNowPrice>149.99</buytItNowPrice>
<startingBidPrice>9.99</startingBidPrice>
<closing_date>2014-12-25</closing_date>
<closing_time>12:32:PM</closing_time>
</item>
<item name = "Pokemon">
<description>Something even cooler.</description>
<buytItNowPrice>33.99</buytItNowPrice>
<startingBidPrice>9.99</startingBidPrice>
<closing_date>2014-12-25</closing_date>
<closing_time>12:32:PM</closing_time>
</item>
输出仅是第一项打印。
只是在黑暗中刺,但也许是因为你的XML无效?尝试将你的'- '包装在'
'根节点中,然后遍历它。 –
kasoban
2014-12-08 08:55:00
就是这样,谢谢! – user2816254 2014-12-08 09:02:57
我从那个评论中创建了一个答案,你应该能够在几分钟内将其标记为已接受。很高兴我能帮上忙! – kasoban 2014-12-08 09:08:55