blob: e083e641d44ff6b026c61c769d0a71cffde7239e [file] [log] [blame]
Fred Drakeac5f7482000-10-16 15:27:05 +00001import sys
2
3from xml.sax import make_parser, handler
4
5class FancyCounter(handler.ContentHandler):
6
7 def __init__(self):
8 self._elems = 0
9 self._attrs = 0
10 self._elem_types = {}
11 self._attr_types = {}
12
13 def startElement(self, name, attrs):
14 self._elems = self._elems + 1
15 self._attrs = self._attrs + len(attrs)
16 self._elem_types[name] = self._elem_types.get(name, 0) + 1
17
Skip Montanaro1e8ce582007-08-06 21:07:53 +000018 for name in attrs.keys():
Fred Drakeac5f7482000-10-16 15:27:05 +000019 self._attr_types[name] = self._attr_types.get(name, 0) + 1
20
21 def endDocument(self):
Collin Winter6f2df4d2007-07-17 20:59:35 +000022 print("There were", self._elems, "elements.")
23 print("There were", self._attrs, "attributes.")
Fred Drakeac5f7482000-10-16 15:27:05 +000024
Collin Winter6f2df4d2007-07-17 20:59:35 +000025 print("---ELEMENT TYPES")
Skip Montanaro1e8ce582007-08-06 21:07:53 +000026 for pair in self._elem_types.items():
Collin Winter6f2df4d2007-07-17 20:59:35 +000027 print("%20s %d" % pair)
Fred Drakeac5f7482000-10-16 15:27:05 +000028
Collin Winter6f2df4d2007-07-17 20:59:35 +000029 print("---ATTRIBUTE TYPES")
Skip Montanaro1e8ce582007-08-06 21:07:53 +000030 for pair in self._attr_types.items():
Collin Winter6f2df4d2007-07-17 20:59:35 +000031 print("%20s %d" % pair)
Fred Drakeac5f7482000-10-16 15:27:05 +000032
Tim Peters182b5ac2004-07-18 06:16:08 +000033
Fred Drakeac5f7482000-10-16 15:27:05 +000034parser = make_parser()
35parser.setContentHandler(FancyCounter())
36parser.parse(sys.argv[1])