首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

在 Rails 應用程式中產生 XML:使用 Builder Gem 完整教學

     編輯:Java 相關知識

在 Ruby on Rails 開發中,產生 XML 文件是常見需求。Rails 透過 Builder Gem 提供了強大且直觀的 XML 產生機制。本文將完整示範從環境建置、資料庫設定、Model 遷移、Controller 邏輯到 View 樣板的完整流程,教您如何從 MySQL 資料庫讀取資料並輸出結構化的 XML 文件。

環境建置與套件安裝

首先確保已安裝 Ruby、RubyGems 與 Rails。在 Windows 環境下,可下載 Ruby Installer(建議 1.8.5 以上版本),安裝時勾選 RubyGems。接著透過指令安裝 Rails 及相依套件:

c:/ruby> gem install rails --include-dependencies

安裝 Builder Gem:

C:/ruby> gem install builder

Builder 提供 Builder::XmlMarkup 類別,支援 CDATA、註解、宣告、處理指示等 XML 結構產生方法,表列如下:

方法說明
cdata!(text)新增 CDATA 區段
comment!(comment_text)新增註解
declare!(inst, *args, &block)新增宣告,支援多參數
instruct!(directive_tag=:xml, attrs={})新增處理指示,屬性以 Hash 指定
new(options={})建立 XML 標記 Builder 物件,可設 target、indent、margin
target!()回傳 Builder 物件的目標輸出對象

資料庫準備與 Rails 專案建立

安裝 MySQL 5.0 並建立服務實例。建立新 Rails 專案:

C:/ruby> rails databasexml

修改 config/database.yml 設定開發環境資料庫連線:

development:
  adapter: mysql
  database: test
  username: root
  password: 
  host: localhost

建立 Model 與 Migration

產生 Catalog Model 及 Migration:

C:\ruby\databasexml> ruby script/generate model catalog

編輯 db/migrate/001_create_catalogs.rb,定義欄位並植入種子資料:

class CreateCatalogs < ActiveRecord::Migration
  def self.up
    create_table :catalogs do |t|
      t.column :journal, :string, :limit => 255
      t.column :publisher, :string, :limit => 255
      t.column :edition, :string, :limit => 255
      t.column :title, :string, :limit => 255
      t.column :author, :string, :limit => 255
    end
    Catalog.create :journal => "IBM developerWorks",
      :publisher => "IBM", :edition => "October 2005",
      :title => "JAXP validation", :author => "Brett McLaughlin"
    Catalog.create :journal => "IBM developerWorks",
      :publisher => "IBM", :edition => "July 2006",
      :title => "The Java XPath API", :author => "Elliotte Rusty Harold"
  end
  def self.down
    drop_table :catalogs
  end
end

執行遷移:

C:/ruby/databasexml> rake migrate

Controller 與 Model 設定

產生 Controller 與 gen_xml Action:

C:/ruby/databasexml> ruby script/generate controller catalog gen_xml

修改 app/models/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"
)

編輯 app/controllers/catalog_controller.rb:

class CatalogController < ApplicationController
  def gen_xml
    @xml = Builder::XmlMarkup.new
    @catalogs = Catalog.find(:all)
  end
end

RXML View 樣板撰寫

將 views/catalog/gen_xml.rhtml 重命名為 gen_xml.rxml,撰寫 XML 產生邏輯:

@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
}

執行與驗證

啟動 WEBrick 伺服器:

C:/ruby/databasexml> ruby script/server

瀏覽 https://localhost:3000/catalog/gen_xml 即可看到產生的 XML 文件,如下圖所示:

產生的 XML 文件輸出畫面

圖 1:從資料庫產生 XML 文件的執行結果

總結

透過 Builder Gem 與 Rails 內建的 MVC 架構,我們能以極少的程式碼完成資料庫到 XML 的轉換。Builder::XmlMarkup 提供直觀的區塊語法,讓 XML 結構產生如同撰寫 Ruby 程式碼般自然。這個範例展示了 Rails 「慣例優於設定」的哲學,讓開發者專注於業務邏輯而非繁瑣的 XML 字串拼接。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved