zoukankan      html  css  js  c++  java
  • XML文件

    安装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父元素等等。
  • 相关阅读:
    利用Vista新技术WCF开发构建服务系统
    WCF开发入门的六个步骤
    C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(一)让物体动起来①
    silverlight
    初探C#3.0
    通过托管代码和 Windows Vista 智能卡 API 来保护您的数据
    用例图
    类图
    Win7下MSN显示两个窗口问题
    设计模式初探
  • 原文地址:https://www.cnblogs.com/mingforyou/p/2799505.html
Copyright © 2011-2022 走看看