Emacs Lisp XmlParser
先日のdeliciousのやつで、
XMLのパースは外部のRubyスクリプトでやってました。
理由は単純で、Emacs LispのXMLパーサの使いかたを知らなかったから。
Emacs LispのXMLパーサは多分これだよね。
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パースしたいなってときはこれ使います。