Thanx to all. I've done it!

===============

import Text.XML.HXT.Core
import Text.XML.HXT.Curl
import Text.XML.HXT.HTTP
import Control.Arrow.ArrowNavigatableTree

pageURL = "http://localhost/test.xml";

main = do
    r <- runX (configSysVars [withCanonicalize no, withValidate no, withTrace 
0, withParseHTML no] >>>
              readDocument [withErrors no, withWarnings no, withHTTP []] 
pageURL >>>
              getChildren >>> isElem >>> hasName "div" >>> (getTitle <+> 
getSections))

    putStrLn "Articles:"
    putStrLn "<" 
    mapM_ putStrLn $ map (\i -> (fst i) ++ " is " ++ (snd i) ++ "\n") r
    putStrLn ">" 

getTitle = listA (getChildren >>> isElem >>> hasName "span") >>> arr head >>> 
getChildren >>> getText >>> arr trim  >>> arr ("Title",)

getSections = addNav >>> 
                listA (getChildren >>> withoutNav (isElem >>> hasName "span")) 
>>> 
                arr tail >>> unlistA >>> 
                ((getChildren >>> remNav >>> getText) &&& 
                (listA followingSiblingAxis >>> arr head >>> remNav >>> getText 
>>> arr (rc . trim)))


  ltrim [] = []
  ltrim (' ':x) = ltrim x
  ltrim ('\n':x) = ltrim x
  ltrim ('\r':x) = ltrim x
  ltrim ('\t':x) = ltrim x
  ltrim x = x 

  rtrim = reverse . ltrim . reverse

  trim = ltrim . rtrim

  rc (':':' ':x) = x 
  rc x = x 


==========================

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to