1

刚开始使用 Ruby 并且有一个关于解析 XML 的新手问题。我正在尝试 REXML(是的,我知道 hpricot 和其他人存在,但我从 REXML 开始学习。)问题是如何迭代地处理这样的 XML 文档:

<?xml version="1.0" ?>
<bars>
    <bar>
        <id>29</id>
        <foo>Something</foo>
    </bar>
    <bar>
        <id>46</id>
        <foo>Something Else</foo>
    </bar>
    ...
</bars>

我想同时处理每个“栏”中的两个元素(实际上,在一次操作中将两个字段都放入数据库行中),而不是简单地一次提取所有“id”或“foos”教程中经常显示的“条”。遍历“栏”元素的最佳方法是什么?我应该 .each 在“条”内还是应该将结构转换为数组?

4

1 回答 1

1

Assuming Bar is an ActiveRecord model this is what you want to do.

require "rexml/document"
include REXML
root = Document.new(File.new(file)).root

root.elements.each("bar") do |bar|
  id = bar.elements["id"].text
  foo = bar.elements["foo"].text
  Bar.create (:id => id, :foo => foo)
end

Essentially it gets a list of Bar elements, and then just pulls id and foo into a Bar.create statement for each bar element in that list.

于 2009-10-13T06:18:10.103 回答