安装XML Builder

gem install builder
class CatalogController < ApplicationController
   def gen_xml
     @xml = Builder::XmlMarkup.new
     @catalogs=Catalog.find(:all)
   end
 end
在目录:views/catalog下新建一个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
 }


def self.import_from_xml(file)
   file_path = "#{RAILS_ROOT}/tmp/xml/"  #创建文件夹 
    if !File.exist?(file_path)
      Dir.mkdir(file_path, 0777)
    end
    #临时文件命名,不能有非法字符,比如"()"因为在linux下文件名不支持"()"等特殊符号   
    file_name = "temp.xml"
    begin
      data_utf = file.read
      File.open(file_path + file_name , 'wb') do |f|
        f.write(data_utf)
        f.close
      end
    ensure  
      file.close
    end
    messages = []
    doc = REXML::Document.new(data_utf)   # 生成一个XML操作对象
    doc.root.each_element("//blog") do |n|   
      if check_id?(n.elements["id"].text)   # 判断id号是否在数据库中存在,若存在则更新,若不存在则新建
        myblog = Myblog.find(n.elements["id"].text)
      else
        myblog = Myblog.new
      end
      myblog.title = n.elements["title"].text
      myblog.content = n.elements["content"].text
      myblog.user_id = n.elements["userid"].text
      myblog.created_at = n.elements["created"].text
      myblog.updated_at = n.elements["updated"].text
      myblog.deleted_at = n.elements["deleted"].text
      if !myblog.save
          messages << "#{myblog.errors.full_messages}"
      end
    end
    FileUtils.rm_rf(file_path) if File.exists?(file_path)
    return messages
  end
doc.root是根节点,doc.root.each_element("//blog")找出所有blog元素。 n.elements["id"].text取出该blog元素的id子元素。另外还有一些方法比较有用,has_attributes?元素是否有属性,has_elements?是否有子元素,attributes[""]取属性值,parent父元素等等。
优质内容筛选与推荐>>
1、adreno的tbdr
2、Hibernate设置自动生成表失败
3、bzoj 2618[Cqoi2006]凸多边形 - 半平面交
4、网络图标打叉或无线已连接 但是显示小黄点
5、找回感觉的练习


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号