Thank you so much Christian for your feedback ... I shall incorporate them.<div><br></div><div>Regards,</div><div>Kashyap<br><br><div class="gmail_quote">On Mon, Jul 23, 2012 at 3:17 PM, Christian Maeder <span dir="ltr">&lt;<a href="mailto:Christian.Maeder@dfki.de" target="_blank">Christian.Maeder@dfki.de</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Am 22.07.2012 17:21, schrieb C K Kashyap:<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I&#39;ve updated the parser here -<br>
<a href="https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/Parsing/xml_3.hs" target="_blank">https://github.com/ckkashyap/<u></u>LearningPrograms/blob/master/<u></u>Haskell/Parsing/xml_3.hs</a><br>
<br>
The whole thing is less than 100 lines and it can handle comments as well.<br>
</blockquote>
<br></div>
This code is still not nice: Duplicate code in openTag and withoutExplictCloseTag.<br>
<br>
The &quot;toplevel-try&quot; in<br>
  try withoutExplictCloseTag &lt;|&gt;  withExplicitCloseTag<br>
should be avoided by factoring out the common prefix.<br>
<br>
Again, I would avoid notFollowedBy by using many1.<br>
<br>
  tag &lt;- try(char &#39;&lt;&#39; &gt;&gt; many1 (letter &lt;|&gt; digit))<br>
<br>
In quotedChar you do not only want to escape the quote but at least the backslash, too. You could allow to escape any character by a backslash using:<br>
  quotedChar c =<br>
    try (char &#39;\\&#39; &gt;&gt; anyChar) &lt;|&gt; noneOf [c, &#39;\\&#39;]<br>
<br>
Writing a separate parser stripLeadingSpaces is overkill. Just use<br>
  &quot;spaces &gt;&gt; parseXML&quot;<br>
<br>
(or apply &quot;dropWhile isSpace&quot; to the input string)<br>
<br>
C.<br>
<br>
[...]<br>
</blockquote></div><br></div>