Emacs Lisp XmlParser

先日のdeliciousのやつで、
XMLのパースは外部のRubyスクリプトでやってました。
理由は単純で、Emacs LispXMLパーサの使いかたを知らなかったから。

Emacs LispXMLパーサは多分これだよね。
http://www.emacswiki.org/emacs/XmlParser
よく(require 'xml)っていうのを見るし。


触ってみたんだけど、
感想: 使いやすい。。。


何が使いやすいって、xml.elが使いやすいというよりは、
LispのS式とXMLが構造的に似ているもんで、デバッグとかがすごいやりやすい。


プログラム自体も思ったより短く書ける。

例えば、deliciousのAPIから持ってきたXMLデータから
Bookmarkの要約のみを抜き出す処理は次のように書けます。

(let* ((root (xml-parse-file (expand-file-name "~/delicious.xml")))
       (posts (car root))
       (post (xml-node-children posts)))
  (dolist (p post)
    (when (listp p)
      (let ((attrs (xml-node-attributes p)))
        (print (cdr (assoc 'description attrs))))))))


これRuby(REXML)とかより便利なんじゃないの?
ってことで、今度からちょろっとXMLパースしたいなってときはこれ使います。