#!/usr/bin/env stack -- stack script --resolver lts-20.15 --package xml import Data.Maybe (catMaybes) import System.Environment (getArgs) import Text.XML.Light.Input import Text.XML.Light.Output import Text.XML.Light.Types main :: IO () main = do filename <- head <$> getArgs xml <- parseXML <$> readFile filename mapM_ (putStrLn . showContent) . catMaybes $ filterHR <$> xml filterHR :: Content -> Maybe Content filterHR (Elem e) | qName (elName e) == "HeartRateBpm" = Nothing filterHR (Elem e) | otherwise = Just . Elem $ e { elContent = catMaybes (filterHR <$> elContent e) } filterHR x = Just x