diff options
author | Georg Brandl <georg@python.org> | 2010-12-30 17:22:33 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2010-12-30 17:22:33 (GMT) |
commit | 4cf83f4d128bd40ebe3b6e59ced4895f554d18de (patch) | |
tree | ccc6e4c3e03a711c45f4badf811314231d646d95 /Demo/xml | |
parent | d1fc34d563a9fd06a78226b1bb4e56286c70e035 (diff) | |
download | cpython-4cf83f4d128bd40ebe3b6e59ced4895f554d18de.zip cpython-4cf83f4d128bd40ebe3b6e59ced4895f554d18de.tar.gz cpython-4cf83f4d128bd40ebe3b6e59ced4895f554d18de.tar.bz2 |
Remove some of the old demos. (Put a few somewhere else.)
Diffstat (limited to 'Demo/xml')
-rw-r--r-- | Demo/xml/elem_count.py | 42 | ||||
-rw-r--r-- | Demo/xml/roundtrip.py | 46 | ||||
-rw-r--r-- | Demo/xml/rss2html.py | 97 |
3 files changed, 0 insertions, 185 deletions
diff --git a/Demo/xml/elem_count.py b/Demo/xml/elem_count.py deleted file mode 100644 index 99d6ca9..0000000 --- a/Demo/xml/elem_count.py +++ /dev/null @@ -1,42 +0,0 @@ -""" -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 - -class FancyCounter(handler.ContentHandler): - - def __init__(self): - self._elems = 0 - self._attrs = 0 - self._elem_types = defaultdict(int) - self._attr_types = defaultdict(int) - - def startElement(self, name, attrs): - self._elems += 1 - self._attrs += len(attrs) - self._elem_types[name] += 1 - - for name in attrs.keys(): - self._attr_types[name] += 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) - -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 deleted file mode 100644 index 801c009..0000000 --- a/Demo/xml/roundtrip.py +++ /dev/null @@ -1,46 +0,0 @@ -""" -A simple demo that reads in an XML document and spits out an equivalent, -but not necessarily identical, document. -""" - -import sys - -from xml.sax import saxutils, handler, make_parser - -# --- The ContentHandler - -class ContentGenerator(handler.ContentHandler): - - def __init__(self, out=sys.stdout): - handler.ContentHandler.__init__(self) - self._out = out - - # ContentHandler methods - - def startDocument(self): - self._out.write('<?xml version="1.0" encoding="iso-8859-1"?>\n') - - def startElement(self, name, attrs): - self._out.write('<' + name) - for (name, value) in attrs.items(): - self._out.write(' %s="%s"' % (name, saxutils.escape(value))) - self._out.write('>') - - def endElement(self, name): - self._out.write('</%s>' % name) - - def characters(self, content): - self._out.write(saxutils.escape(content)) - - def ignorableWhitespace(self, content): - self._out.write(content) - - def processingInstruction(self, target, data): - self._out.write('<?%s %s?>' % (target, data)) - -# --- The main program - -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 deleted file mode 100644 index 49cd154..0000000 --- a/Demo/xml/rss2html.py +++ /dev/null @@ -1,97 +0,0 @@ -""" -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 = """\ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> -<html> -<head> - <title>%s</title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -</head> - -<body> -<h1>%s</h1> -""" - -bottom = """ -</ul> - -<hr> -<address> -Converted to HTML by rss2html.py. -</address> - -</body> -</html> -""" - -# --- The ContentHandler - -class RSSHandler(handler.ContentHandler): - - def __init__(self, out=sys.stdout): - handler.ContentHandler.__init__(self) - self._out = out - - self._text = "" - self._parent = None - self._list_started = False - self._title = None - self._link = None - self._descr = "" - - # ContentHandler methods - - def startElement(self, name, attrs): - if name == "channel" or name == "image" or name == "item": - self._parent = name - - self._text = "" - - def endElement(self, name): - if self._parent == "channel": - if name == "title": - self._out.write(top % (self._text, self._text)) - elif name == "description": - self._out.write("<p>%s</p>\n" % self._text) - - elif self._parent == "item": - if name == "title": - self._title = self._text - elif name == "link": - self._link = self._text - elif name == "description": - self._descr = self._text - elif name == "item": - if not self._list_started: - self._out.write("<ul>\n") - self._list_started = True - - self._out.write(' <li><a href="%s">%s</a> %s\n' % - (self._link, self._title, self._descr)) - - self._title = None - self._link = None - self._descr = "" - - if name == "rss": - self._out.write(bottom) - - def characters(self, content): - self._text = self._text + content - -# --- Main program - -if __name__ == '__main__': - parser = make_parser() - parser.setContentHandler(RSSHandler()) - parser.parse(sys.argv[1]) |