Пример большого XML-файла (~100 MiB):
wget -O - "http://mirror.yandex.ru/fedora/linux/releases/21/Everything/x86_64/os/repodata/e2a28baab2ea4632fad93f9f28144cda3458190888fdf7f2acc9bc289f397e96-primary.xml.gz" | gunzip >test-primary.xml
#!/usr/bin/runhaskell
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PackageImports #-}
import Prelude hiding (readFile, writeFile)
import "xml-conduit" Text.XML
import "xml-conduit" Text.XML.Cursor
main :: IO ()
main = do
doc <- readFile def "test-primary.xml"
let cursor = fromDocument doc
mapM_ print $ cursor $/ laxElement "package" &/ laxElement "name" &/ content
$ /usr/bin/time ./test >/dev/null
22.12user 1.24system 0:23.38elapsed 99%CPU (0avgtext+0avgdata 3906128maxresident)k
0inputs+0outputs (0major+975026minor)pagefaults 0swaps