mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			993 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			993 B
		
	
	
	
		
			Python
		
	
	
	
	
	
import sys
 | 
						|
 | 
						|
from xml.sax import make_parser, handler
 | 
						|
 | 
						|
class FancyCounter(handler.ContentHandler):
 | 
						|
 | 
						|
    def __init__(self):
 | 
						|
        self._elems = 0
 | 
						|
        self._attrs = 0
 | 
						|
        self._elem_types = {}
 | 
						|
        self._attr_types = {}
 | 
						|
 | 
						|
    def startElement(self, name, attrs):
 | 
						|
        self._elems = self._elems + 1
 | 
						|
        self._attrs = self._attrs + len(attrs)
 | 
						|
        self._elem_types[name] = self._elem_types.get(name, 0) + 1
 | 
						|
 | 
						|
        for name in attrs.keys():
 | 
						|
            self._attr_types[name] = self._attr_types.get(name, 0) + 1
 | 
						|
 | 
						|
    def endDocument(self):
 | 
						|
        print "There were", self._elems, "elements."
 | 
						|
        print "There were", self._attrs, "attributes."
 | 
						|
 | 
						|
        print "---ELEMENT TYPES"
 | 
						|
        for pair in  self._elem_types.items():
 | 
						|
            print "%20s %d" % pair
 | 
						|
 | 
						|
        print "---ATTRIBUTE TYPES"
 | 
						|
        for pair in  self._attr_types.items():
 | 
						|
            print "%20s %d" % pair
 | 
						|
 | 
						|
 | 
						|
parser = make_parser()
 | 
						|
parser.setContentHandler(FancyCounter())
 | 
						|
parser.parse(sys.argv[1])
 |