0

我正在尝试读取 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

但是,最后一个元素并不是单独获取值。它正在获取整个标签。有更好的方法吗?

4

1 回答 1

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
于 2013-05-14T16:49:00.457 回答