+++ /dev/null
-"""\r
-A simple demo that reads in an XML document and displays the number of\r
-elements and attributes as well as a tally of elements and attributes by name.\r
-"""\r
-\r
-import sys\r
-from collections import defaultdict\r
-\r
-from xml.sax import make_parser, handler\r
-\r
-class FancyCounter(handler.ContentHandler):\r
-\r
- def __init__(self):\r
- self._elems = 0\r
- self._attrs = 0\r
- self._elem_types = defaultdict(int)\r
- self._attr_types = defaultdict(int)\r
-\r
- def startElement(self, name, attrs):\r
- self._elems += 1\r
- self._attrs += len(attrs)\r
- self._elem_types[name] += 1\r
-\r
- for name in attrs.keys():\r
- self._attr_types[name] += 1\r
-\r
- def endDocument(self):\r
- print "There were", self._elems, "elements."\r
- print "There were", self._attrs, "attributes."\r
-\r
- print "---ELEMENT TYPES"\r
- for pair in self._elem_types.items():\r
- print "%20s %d" % pair\r
-\r
- print "---ATTRIBUTE TYPES"\r
- for pair in self._attr_types.items():\r
- print "%20s %d" % pair\r
-\r
-if __name__ == '__main__':\r
- parser = make_parser()\r
- parser.setContentHandler(FancyCounter())\r
- parser.parse(sys.argv[1])\r