+++ /dev/null
-"""\r
-A demo that reads in an RSS XML document and emits an HTML file containing\r
-a list of the individual items in the feed.\r
-"""\r
-\r
-import sys\r
-import codecs\r
-\r
-from xml.sax import make_parser, handler\r
-\r
-# --- Templates\r
-\r
-top = """\\r
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
-<html>\r
-<head>\r
- <title>%s</title>\r
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r
-</head>\r
-\r
-<body>\r
-<h1>%s</h1>\r
-"""\r
-\r
-bottom = """\r
-</ul>\r
-\r
-<hr>\r
-<address>\r
-Converted to HTML by rss2html.py.\r
-</address>\r
-\r
-</body>\r
-</html>\r
-"""\r
-\r
-# --- The ContentHandler\r
-\r
-class RSSHandler(handler.ContentHandler):\r
-\r
- def __init__(self, out=sys.stdout):\r
- handler.ContentHandler.__init__(self)\r
- self._out = codecs.getwriter('utf-8')(out)\r
-\r
- self._text = ""\r
- self._parent = None\r
- self._list_started = False\r
- self._title = None\r
- self._link = None\r
- self._descr = ""\r
-\r
- # ContentHandler methods\r
-\r
- def startElement(self, name, attrs):\r
- if name == "channel" or name == "image" or name == "item":\r
- self._parent = name\r
-\r
- self._text = ""\r
-\r
- def endElement(self, name):\r
- if self._parent == "channel":\r
- if name == "title":\r
- self._out.write(top % (self._text, self._text))\r
- elif name == "description":\r
- self._out.write("<p>%s</p>\n" % self._text)\r
-\r
- elif self._parent == "item":\r
- if name == "title":\r
- self._title = self._text\r
- elif name == "link":\r
- self._link = self._text\r
- elif name == "description":\r
- self._descr = self._text\r
- elif name == "item":\r
- if not self._list_started:\r
- self._out.write("<ul>\n")\r
- self._list_started = True\r
-\r
- self._out.write(' <li><a href="%s">%s</a> %s\n' %\r
- (self._link, self._title, self._descr))\r
-\r
- self._title = None\r
- self._link = None\r
- self._descr = ""\r
-\r
- if name == "rss":\r
- self._out.write(bottom)\r
-\r
- def characters(self, content):\r
- self._text = self._text + content\r
-\r
-# --- Main program\r
-\r
-if __name__ == '__main__':\r
- parser = make_parser()\r
- parser.setContentHandler(RSSHandler())\r
- parser.parse(sys.argv[1])\r