在(J)Ruby中解析XML并插入数据库

3

我对(J)Ruby还比较陌生 - 在RoR中写了一些小型的“演示应用程序”,但实际上并没有深入学习过语法。

我目前有一个Java编写的应用程序,它可以接收XML文件,使用Hibernate解析后将其插入到MySQL数据库中。我真正想做的是看看能否将其移植到JRuby上,主要是为了学习目的,但我不知道从哪里开始。

这份文档似乎提供了关于解析XML的好方法:

http://developer.yahoo.com/ruby/ruby-xml.html

但是从那里开始,我不确定将其放入数据库的最佳方式是什么。 ActiveRecord是否可行,如果可以,如何将其连接到“独立”的JRuby应用程序?或者我可以将现有的Hibernate与之集成,对吗?

任何建议或示例代码链接都将不胜感激...

谢谢, 安德鲁。


1
我真的不会使用那个文档。 选择HpricotNokogiri - Marc Seeger
1个回答

4

请放心尝试ActiveRecord,以下是使用嵌入式Java数据库h2的入门指南。

我认为您需要这些宝石(即Ruby gem)

jruby -S gem install active_record
jruby -S gem install active_record_jdbc_adapter
jruby -S gem install active_record_jdbch2_adapter
jruby -S gem install jdbc_h2

然后您可以像这样使用活动记录:
require 'active_record'
require 'logger'

my_logger = Logger.new(STDOUT)
my_logger.level = Logger::DEBUG
ActiveRecord::Base.logger = my_logger

ActiveRecord::Base.establish_connection(
  :adapter => 'jdbch2',
  :database => "my_database_file",        # set to anything you want first run
  :username => "my_username",             # set to anything you want first run
  :password => "my_secret_password"       # set to anything you want first run
)

你需要一些表格来插入数据。为了符合ActiveRecord的约定,请维护一个按顺序排列的数据库模式更改文件夹,并将迁移器指向该文件夹。例如,创建一个名为“migrations”的文件夹,以及以下文件命名为“20090815230000_create_my_models.rb”。请确保“snake_case”文件名与“CamelCase”类名匹配。

class CreateMyModels < ActiveRecord::Migration
  def self.up
    create_table :my_models do |t|
      t.string  :foo
    end
  end

  def self.down
    drop_table :my_models
  end
end

现在(回到你的主要脚本),你可以将Rails迁移器指向这个文件夹。Rails迁移器存储运行迁移所需的所有元数据,并按顺序运行它们,一旦新的迁移可用就会运行它们。

ActiveRecord::Migration.verbose = true
ActiveRecord::Migrator.migrate("migrations")

一旦您创建了表格,就可以像平常一样使用ActiveRecord。

class MyModel < ActiveRecord::Base
end

现在您可以将内容插入到数据库中。
x=MyModel.new
x.foo="bar"
x.save!

希望这有所帮助。如果ActiveRecord让你感到太麻烦难以使用,Sequel是一款轻量级且易用的工具。


很酷,对于MySQL也是同样的工作,只需要gem安装jdbc-mysql,在驱动程序部分放置jdbcmysql即可。 - khelll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接