0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】画面からアップロードされたXMLファイルをHash型で読み込む方法

Posted at

Rails(5系)を使ったアプリケーションで、画面からアップロードされたXMLファイルをHash型で読み込みたい場合の実装例です。

アップロードするXMLファイル

今回は検証用に以下のXMLファイルを使用

<?xml version="1.0" encoding="UTF-8"?>
<items>
  <item>AAA</item>
  <item>BBB</item>
  <item>CCC</item>
</items>

html.erbの記述

適当にファイルとボタンタグを配置します。(デザイン・スタイルはお好みでどうぞ!)

<%= form_tag xxx_path, multipart: true do %>
  <label>XMLファイルの読み込み</label>
  <div class="row">
    <div class="col-sm-2">
      <%= file_field_tag :file, class: 'btn btn-primary' %>
    </div>
  </div>
  <div class="row">
    <div class="col-sm-4">
      <%= submit_tag '送信', class: 'btn btn-primary' %>
    </div>
  </div>
<% end %>

Controller.rbの記述

xml = REXML::Document.new(File.new(params[:file].path).read)
xml_h = Hash.from_xml(xml.to_s)

上記の結果以下のようなHash形式でファイルの中身を取得できます。

{"items"=>{"item"=>["AAA", "BBB", "CCC"]}}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?