]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Demo/xml/elem_count.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Demo / xml / elem_count.py
1 """
2 A simple demo that reads in an XML document and displays the number of
3 elements and attributes as well as a tally of elements and attributes by name.
4 """
5
6 import sys
7 from collections import defaultdict
8
9 from xml.sax import make_parser, handler
10
11 class FancyCounter(handler.ContentHandler):
12
13 def __init__(self):
14 self._elems = 0
15 self._attrs = 0
16 self._elem_types = defaultdict(int)
17 self._attr_types = defaultdict(int)
18
19 def startElement(self, name, attrs):
20 self._elems += 1
21 self._attrs += len(attrs)
22 self._elem_types[name] += 1
23
24 for name in attrs.keys():
25 self._attr_types[name] += 1
26
27 def endDocument(self):
28 print "There were", self._elems, "elements."
29 print "There were", self._attrs, "attributes."
30
31 print "---ELEMENT TYPES"
32 for pair in self._elem_types.items():
33 print "%20s %d" % pair
34
35 print "---ATTRIBUTE TYPES"
36 for pair in self._attr_types.items():
37 print "%20s %d" % pair
38
39 if __name__ == '__main__':
40 parser = make_parser()
41 parser.setContentHandler(FancyCounter())
42 parser.parse(sys.argv[1])