[Python-checkins] CVS: python/dist/src/Lib/xml/sax xmlreader.py,1.3,1.4
Fred L. Drake
python-dev@python.org
Thu, 21 Sep 2000 10:43:50 -0700
Update of /cvsroot/python/python/dist/src/Lib/xml/sax
In directory slayer.i.sourceforge.net:/tmp/cvs-serv9605
Modified Files:
xmlreader.py
Log Message:
Paul Prescod <paul@prescod.net>:
Add support for parsing already-opened files. Make sure the parse()
method closes exactly those files that it opens.
Modified by FLD for better conformance to the Python style guide.
This closes SourceForge patch #101512.
Index: xmlreader.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/xml/sax/xmlreader.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** xmlreader.py 2000/07/16 12:04:31 1.3
--- xmlreader.py 2000/09/21 17:43:48 1.4
***************
*** 1,6 ****
- import handler
-
"""An XML Reader is the SAX 2 name for an XML parser. XML Parsers
should be based on this code. """
# ===== XMLREADER =====
--- 1,7 ----
"""An XML Reader is the SAX 2 name for an XML parser. XML Parsers
should be based on this code. """
+
+ import handler
+
# ===== XMLREADER =====
***************
*** 8,14 ****
def __init__(self):
self._cont_handler = handler.ContentHandler()
! #self._dtd_handler = handler.DTDHandler()
! #self._ent_handler = handler.EntityResolver()
! self._err_handler = handler.ErrorHandler()
def parse(self, source):
--- 9,15 ----
def __init__(self):
self._cont_handler = handler.ContentHandler()
! #self._dtd_handler = handler.DTDHandler()
! #self._ent_handler = handler.EntityResolver()
! self._err_handler = handler.ErrorHandler()
def parse(self, source):
***************
*** 93,112 ****
IncrementalParser interface as a convenience to SAX 2.0 driver
writers."""
! def __init__(self, bufsize=2**16 ):
! self._bufsize=bufsize
! XMLReader.__init__( self )
!
! def parse(self, source):
! self.prepareParser(source)
! #FIXME: do some type checking: could be already stream, URL or
! # filename
! inf=open( source )
! buffer = inf.read(self._bufsize)
while buffer != "":
self.feed(buffer)
! buffer = inf.read(self._bufsize)
self.close()
self.reset()
def feed(self, data):
"""This method gives the raw XML data in the data parameter to
--- 94,120 ----
IncrementalParser interface as a convenience to SAX 2.0 driver
writers."""
!
! def __init__(self, bufsize=2**16):
! self._bufsize = bufsize
! XMLReader.__init__(self)
!
! def _parseOpenFile(self, source):
! buffer = source.read(self._bufsize)
while buffer != "":
self.feed(buffer)
! buffer = source.read(self._bufsize)
self.close()
self.reset()
+ def parse(self, source):
+ if hasattr(source, "read"):
+ self._parseOpenFile(source)
+ else:
+ #FIXME: how to recognize if it is a URL instead of filename?
+ self.prepareParser(source)
+ file = open(source)
+ self._parseOpenFile(file)
+ file.close()
+
def feed(self, data):
"""This method gives the raw XML data in the data parameter to
***************
*** 117,120 ****
--- 125,129 ----
feed may raise SAXException."""
raise NotImplementedError("This method must be implemented!")
+
def prepareParser(self, source):
"""This method is called by the parse implementation to allow
***************
*** 216,219 ****
--- 225,229 ----
return self._attrs.values()
+
def _test():
XMLReader()
***************
*** 222,225 ****
AttributesImpl()
! if __name__=="__main__":
_test()
--- 232,235 ----
AttributesImpl()
! if __name__ == "__main__":
_test()