From bc470d5023226dc1af3daa1c1bb5c221d9bba939 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 11 Oct 2009 15:56:06 +0000 Subject: [PATCH] Merged revisions 75358 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r75358 | georg.brandl | 2009-10-11 17:06:44 +0200 (So, 11 Okt 2009) | 1 line Overhaul of Demo/xml. ........ --- Demo/xml/elem_count.py | 26 +++++++++++++-------- Demo/xml/roundtrip.py | 11 +++++---- Demo/xml/rss2html.py | 52 +++++++++++++++++++++++------------------- 3 files changed, 51 insertions(+), 38 deletions(-) diff --git a/Demo/xml/elem_count.py b/Demo/xml/elem_count.py index e083e641d4..99d6ca9498 100644 --- a/Demo/xml/elem_count.py +++ b/Demo/xml/elem_count.py @@ -1,4 +1,10 @@ +""" +A simple demo that reads in an XML document and displays the number of +elements and attributes as well as a tally of elements and attributes by name. +""" + import sys +from collections import defaultdict from xml.sax import make_parser, handler @@ -7,16 +13,16 @@ class FancyCounter(handler.ContentHandler): def __init__(self): self._elems = 0 self._attrs = 0 - self._elem_types = {} - self._attr_types = {} + self._elem_types = defaultdict(int) + self._attr_types = defaultdict(int) 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 + self._elems += 1 + self._attrs += len(attrs) + self._elem_types[name] += 1 for name in attrs.keys(): - self._attr_types[name] = self._attr_types.get(name, 0) + 1 + self._attr_types[name] += 1 def endDocument(self): print("There were", self._elems, "elements.") @@ -30,7 +36,7 @@ class FancyCounter(handler.ContentHandler): for pair in self._attr_types.items(): print("%20s %d" % pair) - -parser = make_parser() -parser.setContentHandler(FancyCounter()) -parser.parse(sys.argv[1]) +if __name__ == '__main__': + parser = make_parser() + parser.setContentHandler(FancyCounter()) + parser.parse(sys.argv[1]) diff --git a/Demo/xml/roundtrip.py b/Demo/xml/roundtrip.py index 8d7d4374c1..801c0092fe 100644 --- a/Demo/xml/roundtrip.py +++ b/Demo/xml/roundtrip.py @@ -3,7 +3,7 @@ A simple demo that reads in an XML document and spits out an equivalent, but not necessarily identical, document. """ -import sys, string +import sys from xml.sax import saxutils, handler, make_parser @@ -11,7 +11,7 @@ from xml.sax import saxutils, handler, make_parser class ContentGenerator(handler.ContentHandler): - def __init__(self, out = sys.stdout): + def __init__(self, out=sys.stdout): handler.ContentHandler.__init__(self) self._out = out @@ -40,6 +40,7 @@ class ContentGenerator(handler.ContentHandler): # --- The main program -parser = make_parser() -parser.setContentHandler(ContentGenerator()) -parser.parse(sys.argv[1]) +if __name__ == '__main__': + parser = make_parser() + parser.setContentHandler(ContentGenerator()) + parser.parse(sys.argv[1]) diff --git a/Demo/xml/rss2html.py b/Demo/xml/rss2html.py index 15c9891952..49cd154ecd 100644 --- a/Demo/xml/rss2html.py +++ b/Demo/xml/rss2html.py @@ -1,45 +1,50 @@ +""" +A demo that reads in an RSS XML document and emits an HTML file containing +a list of the individual items in the feed. +""" + import sys +import codecs from xml.sax import make_parser, handler # --- Templates -top = \ -""" +top = """\ - - - %s - - - -

%s

+ + + %s + + + + +

%s

""" -bottom = \ -""" +bottom = """ -
-
-Converted to HTML by sax_rss2html.py. -
+
+
+Converted to HTML by rss2html.py. +
- - + + """ # --- The ContentHandler class RSSHandler(handler.ContentHandler): - def __init__(self, out = sys.stdout): + def __init__(self, out=sys.stdout): handler.ContentHandler.__init__(self) self._out = out self._text = "" self._parent = None - self._list_started = 0 + self._list_started = False self._title = None self._link = None self._descr = "" @@ -69,7 +74,7 @@ class RSSHandler(handler.ContentHandler): elif name == "item": if not self._list_started: self._out.write("