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])
 |