Bob*_*Bob 3 ruby xml ruby-on-rails nokogiri
我想打开一个外部XML文件,解析它并使用数据存储在我的数据库中.我用Nokogiri很容易做到这一点:
file = '...external.xml'
xml = Nokogiri::XML(open(file))
xml.xpath('//Element').each do |element|
# process elements and save to Database e.g.:
@data = Model.new(:attr => element.at('foo').text)
@data.save
end
Run Code Online (Sandbox Code Playgroud)
现在我想尝试(也许更快)Ox gem(https://github.com/ohler55/ox) - 但我不知道如何从纪录片中打开和处理文件.
上面代码的任何等效代码示例都很棒!谢谢!
您不能使用XPath来定位Ox中的节点,但Ox确实提供了一种locate方法.您可以像这样使用它:
xml = Ox.parse(%Q{
<root>
<Element>
<foo>ex1</foo>
</Element>
<Element>
<foo>ex2</foo>
</Element>
</root>
}.strip)
xml.locate('Element/foo/^Text').each do |t|
@data = Model.new(:attr => t)
@data.save
end
# or if you need to do other stuff with the element first
xml.locate('Element').each do |elem|
# do stuff
@data = Model.new(:attr => elem.locate('foo/^Text').first)
@data.save
end
Run Code Online (Sandbox Code Playgroud)
如果您的查询找不到任何匹配项,它将返回一个空数组.有关locate查询参数的简短说明,请参阅element.rb上的源代码.
| 归档时间: |
|
| 查看次数: |
3506 次 |
| 最近记录: |