科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件在Rails App上写XML

在Rails App上写XML

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在这篇文章里,我们将要用这个Builder库从数据库表中创建一个XML文件。

作者:Deepak Vohra/李安民编译 来源:51CTO.com 2007年9月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

用rake. rake运行这个迁移脚本和在J2EE中运行Ant有相似之处。Rails 提供了一个叫做迁移的目标去运行迁移。

C:/ruby/databasexml>rake migrate

这个数据库表目录是在MySQL 数据库中被创建的。下面,创建一个控制器脚本,包括一个控制器动作gen_xml,以便从数据库表中产生一个XML文件。

C:/ruby/databasexml>ruby script/generate

controller catalog gen_xml

这个控制器脚本app/controllers/catalog_controller.rb被创建了。修改这个模型脚本来设置数据库表并建立与MySQL 数据库的连接。这个数据库表是用ActiveRecord::Base类的set_table_name方法设置的。这个数据库连接是用ActiveRecord::Base 类的establish_connection 方法建立的。这个模型脚本catalog.rb如下所示:

require 'active_record'

class Catalog < ActiveRecord::Base

set_table_name "catalogs"

end

ActiveRecord::Base.establish_connection(

:adapter  => "mysql",

:host     => "localhost",

:username => "root",

:password =>    nil,     

:database => "test"

)

在控制器脚本中,为了找回MySQL 数据库中的数据,修改控制其动作的gen_xml。在这个gen_xml 方法中,创建一个Builder::XmlMarkup 对象。

@xml = Builder::XmlMarkup.new

为了从MySQL 数据库表目录中找回数据,用find(:all) 方法把数据设置在模型脚本中。这个find(:all) 方法能从数据库表中找回所有的的纵列,然后利用find_by_sql(sql)方法去运行特定的SQL语句来找回数据。

@catalogs=Catalog.find(:all)

完整的控制器脚本显示在下面:

class CatalogController < ApplicationController

def gen_xml

@xml = Builder::XmlMarkup.new

@catalogs=Catalog.find(:all)

end

end

在views/catalog路径下,把gen_xml.rhtml 观察模板修改成为gen_xml.rxml.。

然后删除之前的gen_xml.rhtml 观察模板。在后边改成的RXML 模板中,利用从数据库中找回的数据来创建一个XML文件并添加一个XML声明。

@xml.instruct! :xml, :version=>"1.0"

添加一个根元素目录。

@xml.catalogs{}

在根元素中,重述了这个从数据库中获取的数据,并且为结果集中的每一行数据创建目录元素。这个@catalogs变量是在控制器脚本和从数据库中获取数据的结果集中表现的。举例说,要找回定期刊物的专栏的值,如下所示:

for catalog in @catalogs

@xml.catalog do

@xml.journal(catalog.journal)





end

完整的gen_xml.rxml 文件在显示在下面:

@xml.instruct! :xml, :version=>"1.0"



@xml.catalogs{

for catalog in @catalogs

@xml.catalog do

@xml.journal(catalog.journal)

@xml.publisher(catalog.publisher)

@xml.edition(catalog.edition)    

@xml.title(catalog.title)

@xml.author(catalog.author)

end

end

}

下一步,运行这个Rails 应用程序来产生一个XML文件。如果还没有开始的话,开始运行这个WEBrick 网络服务器。

C:/ruby/databasexml>ruby script/server

在超链接http://localhost:3000/catalog/gen_xml中调用gen_xml控制器动作,数据从MySQL 数据库中被获取并且观察模板gen_xml.rxml 被运行。然后,在这个gen_xml.rxml 模板中,一个XML文件产生了,像下面的图1那样。

 

图1:创建XML文件

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章