Thank you so much ... I've updated my monad version here - 

https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/Parsing/xml_1.hs 

and the Applicative version here -  https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/Parsing/xml_2.hs 

The applicative version however does not seem to work.

Is there a good tutorial that I can look up for Parsec - I am checking out http://legacy.cs.uu.nl/daan/download/parsec/parsec.html but  I am looking for a tutorial where a complex parser would be built ground up. 

Next I'd like to take care of escaped angular brackets.

Regards,
Kashyap


On Thu, Jul 19, 2012 at 7:40 PM, Christian Maeder <Christian.Maeder@dfki.de> wrote:
Am 19.07.2012 15:41, schrieb Simon Hengel:

On Thu, Jul 19, 2012 at 03:34:47PM +0200, Simon Hengel wrote:
     openTag :: Parser String
     openTag = char '<' *> many (noneOf ">") <* char '>'

if you disallow empty tags and "/" within tags, then you can avoid the
notFollowedBy construct by:

       openTag = try (char '<' *> many1 (noneOf "/>")) <* char '>'

C.



     endTag :: String -> Parser String
     endTag str = string "</" *> string str <* char '>'

Well yes, modified to what Christian Maeder just suggested.

Cheers,
Simon