Viewing file: elem_count.py (993 B) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
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])
|