ruby のNokgiri をもっと簡単に使いたい。
PHPのSimpeXMLに負けてる気がします。JSON.load にも負けてる気がします。
NokogirのSlopを見つけた
doc = Nokogir::Slop("<book><title>日常に潜む数理曲線</title></book>") doc.book.tile.text #=> 日常に潜む数理曲線
これが出来る。
もういちいち、searchで降りて行かなくていいんです。オブジェクトしてアクセ出来るようになってとても便利なんです。
実際にやってみた
次のような。XMLがあるとき
users.xml
<?xml version="1.0" encoding="utf-8"?> <users> <user> <loginId>takuya@mmmm.jp</loginId> <passwd>************</passwd> <tel>080-****-3141</tel> <mail>takuya+aaa@mmmm.jp</mail> <firstName>takuya</firstName> <lastName>mmmmmmmmmm</lastName> </user> <user> <loginId>takuya@mmmm.biz</loginId> <passwd>***********</passwd> <tel>080-*****-****</tel> <mail>takuya+bbbbbb@mmmmmm.biz</mail> <firstName>takuya</firstName> <lastName>mmmmmmmmmm</lastName> </user> </users>
これを、Slopする
doc = Nokogiri::Slop( open("users.xml").read ) doc.users.user.size #=> 2 doc.users.user[0].loginId #=>takuya@mmmm.jp doc.users.user[1].mail #=> takuya+bbbbbb@mmmmmm.jp
このように、オブジェクトしてアクセスができるようになってガッツリ便利。
JSONも便利だけどXMLも便利
XMLは、設定ファイルの細かいシンタックスエラーが出にくいので、とても好きだ。
JSONは配列の「,」抜けや、オブジェクトの { } の個数が合わなくなったりする。
JSON.dump 以外の手法でJSON作るのはマジ苦痛。String#+で作る行為すら嫌。
大きいデータを受け渡す時や繰り返し構造があるときはJSONよりXMLのほうが圧倒的に扱いやすい。
Slorがあるとわかればもっと活用できますね。