RailsのActiveSupportは大変便利で、生Ruby使うときも
irb -r rubygems -r active_support
をデフォルトにしたくなります。
# 個人的には .blank? が一番便利だと思います。
ところで、Hash.from_xmlを使うとお手軽にXMLをパースできますが、若干癖があるので注意が必要です。
・子要素も属性も同じように扱われる
・同じ名前の要素が複数あると自動で配列になる
・typeという名前の属性は、無視されることがある
・ハイフンはアンダースコアに置換される
たとえば、user-listの中にuserが複数ある場合、
{"user_list" => {"user" => ["yamada", "tanaka"]}}
のように変換されるため、扱いやすいのですが、userがたまたま1件だと、
{"user_list" => {"user" => "yamada"}}
のようになり、userが配列と期待しているプログラムは動かなくなります。
特に、検索系のXMLを使う際は注意が必要です。
また、属性は子要素のように使えますが、属性が1つだけだったり、子要素が文字列の場合、扱いが変わったり消えてしまうことがあるので、注意しましょう。
以下に例を挙げます。
<a><b size="123">456</b></a> => {"a" => {"b" => "456"}} <a><b size="123" /></a> => {"a" => {"b" => "123"}} <a><b type="123" /></a> => {"a" => {"b" => nil}} <a><b size="123"><c>456</c></b></a> => {"a" => {"b" => {"size" => "123", "c" => "456"}}} <a><b type="123"><c>456</c></b></a> => {"a" => {"b" => {"c" => "456", "type" => "123"}}}
複雑なXMLをパースする際は、ちゃんとnokogiriなどのライブラリを使うと良さそうですね。