RosettaCodeData/Task/XML-XPath/Haskell/xml-xpath-2.hs

19 lines
466 B
Haskell

{-# LANGUAGE Arrows #-}
import Text.XML.HXT.Arrow
{- For HXT version >= 9.0, use instead:
import Text.XML.HXT.Core
-}
deepElem name = deep (isElem >>> hasName name)
process = proc doc -> do
item <- single (deepElem "item") -< doc
_ <- listA (arrIO print <<< deepElem "price") -< doc
names <- listA (deepElem "name") -< doc
returnA -< (item, names)
main = do
[(item, names)] <- runX (readDocument [] "xmlpath.xml" >>> process)
print item
print names