SXMLでRSSタイトル一覧

30分プログラム、その384。id:Gemma先生が話してたSXMLを使って、タイトルをリストアップしてみた。単に、SXPathが使ってみたかっただけ。

SXPathを作ったあとに、それをSXMLに適用すると結果がもらえるのはおもしろい。毎回、 XPathをパースする手間がないんだろうなぁ。

;; sxpathを作る
(define xp (sxpath '(// rss:item rss:title *text*)))

;; sxpathを適用する
(xp sxml)

使い方

$ gosh 2008-10-07-224205.scm rss
[Scala][30分プログラム]文字の種類カウント付きwc
[OCaml][日記]OCamlのストリームパーサーすごい
[zsh]cdしたあとにls
[Python][30分プログラム]カエサル暗号
[w3m]w3mでもスマートキーワード
[w3m]OperaのShift+矢印をw3mにも
[Perl][30分プログラム]PODを使ったHTML化
[Scala]もう一つの三項演算子
[Erlang][30分プログラム]OTPを試す

ソースコード

#! /opt/local/bin/gosh
;; -*- mode:scheme; coding:utf-8 -*-
;;
;; 2008-10-07-224205.scm -
;;
;; Copyright(C) 2008 by mzp
;; Author: MIZUNO Hiroki / mzpppp at gmail dot com
;; http://howdyworld.org
;;
;; Timestamp: 2008/10/07 22:42:09
;;
;; This program is free software; you can redistribute it and/or
;; modify it under MIT Lincence.
;;

(use sxml.ssax)
(use sxml.sxpath)

 (define (main args)
  (let1 sxml (ssax:xml->sxml (open-input-file (cadr args)) 
                            '((rss . "http://purl.org/rss/1.0/")))
    (map print ((sxpath '(// rss:item rss:title *text*) ) sxml))))