それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

rubyのNokogiriをもっと簡単に!Slopする。

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があるとわかればもっと活用できますね。

参考資料

Searching a XML/HTML document - Nokogiri 鋸

PHP: Examples - Manual