我正在尝试读取XML文件并将结构存储到对象数组中。这是我的代码:
class Bike
attr_accessor :id, :color, :name
def initialize(id, color, name)
@id = id
@color = color
@name = name
end
end
---x---snip---x---
rules.root.each_element do |node1|
case node1.name
when "Bike"
bike = Bike.new(node1.attributes['id'], node1.attributes['color'], { |bike_elem| bike_elem.text.chomp if bike_elem.name == "name"})
bikes.push bike
end
end
但是,最后一个元素不是单独获取值。它正在获取整个标记。有没有更好的方法呢?
答案 0 :(得分:1)
您的代码块{ |bike_elem| bike_elem.text.chomp if bike_elem.name == "name" }
在new
参数列表中似乎没有意义。
bike_elem
来自哪里?在这种情况下,这不是有效的Ruby。
在不知道XML的样子的情况下,很难在这里给出答案。
但我建议使用像Nokogiri,libxml这样的XML库,然后解析出来
在执行new
之前的名称。尝试使用XPath。
rules.root.each_element do |node1|
case node1.name
when "Bike"
name = node1.attributes[....]
bike = Bike.new(node1.attributes['id'], node1.attributes['color'],name )
bikes.push bike
end
end