2007-09-04 [長年日記]

[Haskell] HXTを使ってタグの数を数える

HXTは木構造から木構造への変換は簡単にできますが、その他のことをしようとすると結構厄介です。下の例のように単にタグの数を数える場合でも、ステートを使ったほうがやりやすいのではないかと思います。

{-# LANGUAGE Arrows #-}

module Main (main) where

import Control.Monad
import System.Environment
import Text.XML.HXT.Arrow

main :: IO ()
main = do
    args <- getArgs
    let src = args !! 0
        tag = args !! 1
    (s, _) <- runIOSLA (readDocument [(a_validate, v_0)] src >>> count tag) (initialState 0) undefined
    print $ xio_userState s
    return ()

count tag = (hasName tag >>> changeUserState (const (+1)) >>> none) <+>
            (processChildren $ count tag)

トップ «前の日記(2007-08-31) 最新 次の日記(2007-09-08)»