diff --git a/src/mio/parser.py b/src/mio/parser.py
index b71d07d9ec849b325af86ab80d860c022811c3bc..111b8c31da0fd9cd5dba8f9a4e929437184f347b 100755
--- a/src/mio/parser.py
+++ b/src/mio/parser.py
@@ -2,7 +2,7 @@ import os
 import stat
 import sys
 import time
-import xml.sax
+import xml.parsers.expat
 import traceback
 import urlparse
 import urllib2
@@ -451,7 +451,7 @@ class Comment:
     def __repr__(self):
         return self._xml()
 
-class Parser(xml.sax.ContentHandler):
+class Parser:
     def __init__(self, url, include_comments=False):
         """Parse the given url inti .tree
 
@@ -463,31 +463,30 @@ class Parser(xml.sax.ContentHandler):
         self.tree = None
         
         # Create a xml parser
-        import xml.parsers.expat
         self.parser = xml.parsers.expat.ParserCreate()
         self.parser.StartElementHandler = self.startElement
         self.parser.EndElementHandler = self.endElement
         self.parser.CharacterDataHandler = self.characters
         self.parser.CommentHandler = self.comment
-        """parser = xml.sax.make_parser()
-        parser.setFeature(xml.sax.handler.feature_namespaces, 0)
-        parser.setContentHandler(self)
-        try:
-            parser.setFeature(xml.sax.handler.feature_external_ges, 0)
-        except:
-            pass
-        """
 
         # Parse the url
         self.current = [ self ]
         (scheme, host, path, param, query, frag) = urlparse.urlparse(url)
-        if not scheme:
-            self.parser.Parse(open(url).read())
+        try:
+            if not scheme:
+                self.parser.Parse(open(url).read())
+                pass
+            else:
+                self.parser.Parse(urllib2.urlopen(url).read())
+                pass
             pass
-        else:
-            self.parser.Parse(urllib2.urlopen(url).read())
+        except xml.parsers.expat.ExpatError:
+            reason = xml.parsers.expat.ErrorString(self.parser.ErrorCode)
+            line = self.parser.ErrorLineNumber
+            column = self.parser.ErrorColumnNumber
+            raise Exception("%s at line %d, column %d in %s" %
+                            (reason, line, column, url))
             pass
-      
         # Set the mtime
         mtime = 0
         try: