Revision: 1004
http://svn.sourceforge.net/pygccxml/?rev=1004&view=rev
Author: roman_yakovenko
Date: 2007-04-19 04:23:51 -0700 (Thu, 19 Apr 2007)
Log Message:
-----------
even faster implementation of xml parser
Modified Paths:
--------------
pygccxml_dev/pygccxml/parser/etree_scanner.py
Modified: pygccxml_dev/pygccxml/parser/etree_scanner.py
===================================================================
--- pygccxml_dev/pygccxml/parser/etree_scanner.py 2007-04-19 09:44:45 UTC (rev 1003)
+++ pygccxml_dev/pygccxml/parser/etree_scanner.py 2007-04-19 11:23:51 UTC (rev 1004)
@@ -19,22 +19,37 @@
def __recursive_saxify(self, element ):
self.__handler.startElement( element.tag, element.attrib )
- if element.text:
- self.__handler.characters(element.text)
+ #~ if element.text:
+ #~ self.__handler.characters(element.text)
map( self.__recursive_saxify, element )
self.__handler.endElement( element.tag )
- if element.tail:
- self.__handler.characters(element.tail)
+ #~ if element.tail:
+ #~ self.__handler.characters(element.tail)
class etree_scanner_t( scanner.scanner_t ):
def __init__(self, gccxml_file, decl_factory, *args ):
scanner.scanner_t.__init__( self, gccxml_file, decl_factory, *args )
- def read( self ):
+ def read( self ):
tree = ElementTree.parse( self.gccxml_file )
saxifier = etree_saxifier_t( tree, self )
- saxifier.saxify()
+ saxifier.saxify()
+
+class ietree_scanner_t( scanner.scanner_t ):
+ def __init__(self, gccxml_file, decl_factory, *args ):
+ scanner.scanner_t.__init__( self, gccxml_file, decl_factory, *args )
+ def read( self ):
+ context = ElementTree.iterparse(self.gccxml_file, events=("start", "end"))
+ for event, elem in context:
+ if event == 'start':
+ self.startElement( elem.tag, elem.attrib )
+ else:
+ self.endElement( elem.tag )
+ elem.clear()
+ self.endDocument()
+
+etree_scanner_t = ietree_scanner_t
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|