symbian-qemu-0.9.1-12/python-2.6.1/Demo/xml/rss2html.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 import sys
       
     2 
       
     3 from xml.sax import make_parser, handler
       
     4 
       
     5 # --- Templates
       
     6 
       
     7 top = \
       
     8 """
       
     9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
       
    10 <HTML>
       
    11 <HEAD>
       
    12   <TITLE>%s</TITLE>
       
    13 </HEAD>
       
    14 
       
    15 <BODY>
       
    16 <H1>%s</H1>
       
    17 """
       
    18 
       
    19 bottom = \
       
    20 """
       
    21 </ul>
       
    22 
       
    23 <HR>
       
    24 <ADDRESS>
       
    25 Converted to HTML by sax_rss2html.py.
       
    26 </ADDRESS>
       
    27 
       
    28 </BODY>
       
    29 </HTML>
       
    30 """
       
    31 
       
    32 # --- The ContentHandler
       
    33 
       
    34 class RSSHandler(handler.ContentHandler):
       
    35 
       
    36     def __init__(self, out = sys.stdout):
       
    37         handler.ContentHandler.__init__(self)
       
    38         self._out = out
       
    39 
       
    40         self._text = ""
       
    41         self._parent = None
       
    42         self._list_started = 0
       
    43         self._title = None
       
    44         self._link = None
       
    45         self._descr = ""
       
    46 
       
    47     # ContentHandler methods
       
    48 
       
    49     def startElement(self, name, attrs):
       
    50         if name == "channel" or name == "image" or name == "item":
       
    51             self._parent = name
       
    52 
       
    53         self._text = ""
       
    54 
       
    55     def endElement(self, name):
       
    56         if self._parent == "channel":
       
    57             if name == "title":
       
    58                 self._out.write(top % (self._text, self._text))
       
    59             elif name == "description":
       
    60                 self._out.write("<p>%s</p>\n" % self._text)
       
    61 
       
    62         elif self._parent == "item":
       
    63             if name == "title":
       
    64                 self._title = self._text
       
    65             elif name == "link":
       
    66                 self._link = self._text
       
    67             elif name == "description":
       
    68                 self._descr = self._text
       
    69             elif name == "item":
       
    70                 if not self._list_started:
       
    71                     self._out.write("<ul>\n")
       
    72                     self._list_started = 1
       
    73 
       
    74                 self._out.write('  <li><a href="%s">%s</a> %s\n' %
       
    75                                 (self._link, self._title, self._descr))
       
    76 
       
    77                 self._title = None
       
    78                 self._link = None
       
    79                 self._descr = ""
       
    80 
       
    81         if name == "rss":
       
    82             self._out.write(bottom)
       
    83 
       
    84     def characters(self, content):
       
    85         self._text = self._text + content
       
    86 
       
    87 # --- Main program
       
    88 
       
    89 parser = make_parser()
       
    90 parser.setContentHandler(RSSHandler())
       
    91 parser.parse(sys.argv[1])