diff options
author | Fred Drake <fdrake@acm.org> | 2000-10-16 15:27:05 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2000-10-16 15:27:05 (GMT) |
commit | ac5f7483e8f0ae21e3b565e4d7d97c99898817f7 (patch) | |
tree | 20cc9f2cbca9d874c48482ffce8620f39272b2fa /Demo/xml/rss2html.py | |
parent | f155170f09a908da985c6a525797f3a6016b2c89 (diff) | |
download | cpython-ac5f7483e8f0ae21e3b565e4d7d97c99898817f7.zip cpython-ac5f7483e8f0ae21e3b565e4d7d97c99898817f7.tar.gz cpython-ac5f7483e8f0ae21e3b565e4d7d97c99898817f7.tar.bz2 |
Demos of the new XML support from Lars Marius Garshol <larsga@garshol.priv.no>.
Diffstat (limited to 'Demo/xml/rss2html.py')
-rw-r--r-- | Demo/xml/rss2html.py | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/Demo/xml/rss2html.py b/Demo/xml/rss2html.py new file mode 100644 index 0000000..df5d1c7 --- /dev/null +++ b/Demo/xml/rss2html.py @@ -0,0 +1,91 @@ +import sys + +from xml.sax import make_parser, handler + +# --- Templates + +top = \ +""" +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<HTML> +<HEAD> + <TITLE>%s</TITLE> +</HEAD> + +<BODY> +<H1>%s</H1> +""" + +bottom = \ +""" +</ul> + +<HR> +<ADDRESS> +Converted to HTML by sax_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 = 0 + 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 = 1 + + 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 + +parser = make_parser() +parser.setContentHandler(RSSHandler()) +parser.parse(sys.argv[1]) |