home *** CD-ROM | disk | FTP | other *** search
Python Source | 2000-10-25 | 1005 b | 37 lines |
- 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])
-