[Haskell-cafe] Processing XML with HXT

rodrigo.bonifacio rodrigo.bonifacio at uol.com.br
Wed Apr 23 10:16:35 EDT 2008


Hi Uwe Schmidt, thanks a lot. 

Just one more question, I didn't find any example describing how to get the text information of a XML element in the picklers tutorial. So, if the use case element is described as follwing: 

<useCase>
   <id>UC_01</id> 
   <name>Opening ...</name> 
   <description>This use case describes how...</description> 
</useCase> 

How can I set the id, name and desription of a use case? 

-- use case data type
data UseCaseModel = UCM Name [UseCase]
data UseCase = UseCase Id Name Description deriving (Show)

-- I tried the following picler implementation
-- but I think that it is not correct.
instance XmlPickler UseCase where
    xpickle = xpUseCase

xpUseCase :: PU  UseCase
xpUseCase = 
xpElem "useCase" $  
xpWrap ( \ (i, n, d) -> UseCase i n d, 
                        \t -> (ucId t, name t, description t))  $
       (xpTriple (xpElem "id" xpText)
	         (xpElem "name" xpText)
	         (xpElem "description" xpText))

> Hi Rodrigo,
> 
> > I´m just starting with HXT. My question is, how can I expose a "use case" from the main function below (the XmlPickler for UseCase has been already defined):
> > 
> > main :: IO ()
> > main = do
> >       runX ( xunpickleDocument xpUseCase [ (a_validate,v_0) ],  "uc.xml" )
> >       return ()
> > 
> > For example, if I just want to show the use case contents, how can I call "show" for a retrived use case.
> 
> -------------------------------------
> 
> 1. version
> 
> main :: IO ()
> main = do
>        [x] <- runX ( xunpickleDocument xpUseCase [ (a_validate,v_0) ],  "uc.xml" )
>        print x
>        return ()
> 
> x is processed outside the arrow
> 
> -------------------------------------
> 2. version
> 
> main :: IO ()
> main = do
>        runX ( xunpickleDocument xpUseCase [ (a_validate,v_0) ],  "uc.xml" 
>               >>>
>               arrIO print
>             )
>        return ()
> 
> x is processed within an arrow by lifting the print function to then arrow level.
> 
> ------------------------------------
> 
> There is a new wiki page about picklers
> http://www.haskell.org/haskellwiki/HXT/Conversion_of_Haskell_data_from/to_XML
> 
> Cheers,
> 
>   Uwe
> 
> -- 
> 
> Uwe Schmidt
> Web: http://www.fh-wedel.de/~si/
> 

-----------------------------------
Rodrigo Bonifácio de Almeida
Universidade Católica de Brasília
 - Grupo de Engenharia de Software
 - JavaComBr (www.ucb.br/java)



More information about the Haskell-Cafe mailing list