These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						|
A simple demo that reads in an XML document and displays the number of
 | 
						|
elements and attributes as well as a tally of elements and attributes by name.
 | 
						|
"""
 | 
						|
 | 
						|
import sys
 | 
						|
from collections import defaultdict
 | 
						|
 | 
						|
from xml.sax import make_parser, handler
 | 
						|
 | 
						|
class FancyCounter(handler.ContentHandler):
 | 
						|
 | 
						|
    def __init__(self):
 | 
						|
        self._elems = 0
 | 
						|
        self._attrs = 0
 | 
						|
        self._elem_types = defaultdict(int)
 | 
						|
        self._attr_types = defaultdict(int)
 | 
						|
 | 
						|
    def startElement(self, name, attrs):
 | 
						|
        self._elems += 1
 | 
						|
        self._attrs += len(attrs)
 | 
						|
        self._elem_types[name] += 1
 | 
						|
 | 
						|
        for name in attrs.keys():
 | 
						|
            self._attr_types[name] += 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
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    parser = make_parser()
 | 
						|
    parser.setContentHandler(FancyCounter())
 | 
						|
    parser.parse(sys.argv[1])
 |