rubyでxmlを読み込む
用意する物
rubyでXMLファイルを読み込む場合、特別なGemは必要なく、デフォルトで用意されているrexml
物だけで事足りるので便利です。
require "rexml/document"
すれば利用可能です。
使い方
読み込み
doc = REXML::Document.new(File.new("openCampus.xml"))
子要素の取得
doc.elements
値の取得
doc.elements.first.text
属性の取得
doc.elements.first.attributes
要素を辿る
doc.elements["RESULTS/RETURN_CODE"]
サンプルコード
require "rexml/document"
# XMLファイル読み込み
doc = REXML::Document.new(File.new("test.xml"))
# インデント出力
def space x
result = ''
x.times { result += ' ' }
result
end
# 再帰的に子要素を出力
def show_children parent, level
parent.elements.each do |child|
puts space(level) + child.name + (child.text ? ' => ' + child.text : '')
show_children child, level + 1
end
end
# 表示
show_children doc, 0
Hashに変換
Hashに変換するにはActiveSupport
のcore_ext
を使う方法があります。
require "rexml/document"
require 'active_support/core_ext'
# XMLファイル読み込み
doc = REXML::Document.new(File.new("test.xml"))
#Hashに変換
hash = Hash.from_xml(doc.to_s)