Source de acteurs-parser.py
1: #!/usr/bin/python
2: # -*- coding: utf-8 -*-
3:
4:
5: from xml.sax import ContentHandler,make_parser
6:
7: import sys
8:
9:
10: class ActorsHandler(ContentHandler):
11:
12:
13:
14: def startDocument(self):
15: "ce que l'on fait au début du document"
16:
17: print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
18: print '<html xmlns="http://www.w3.org/1999/xhtml">'
19: print '<head>'
20: print '<title>Acteurs</title>'
21: print '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'
22: print '<link rel="stylesheet" href="acteurs.css" />'
23: print '</head>'
24: print '<body>'
25: print '<h1>Mes acteurs préférés</h1>'
26:
27:
28:
29:
30:
31: def endDocument(self):
32: "ce que l'on fait à la fin du document"
33:
34: print '</body>'
35: print '</html>'
36:
37:
38:
39:
40:
41: def startElement(self, name, attrs):
42: "ce que l'on fait pour chaque balise ouvrante"
43:
44: if name=="prenom":
45: print '<h2>',
46: elif name=="biographie":
47: print '</table>'
48: print '<h3>Biographie</h3>'
49: elif name=="p":
50: print '<p>'
51: elif name=="refacteur":
52: print '<strong>',
53: elif name=="film":
54: print '<em>',
55: elif name=="annee":
56: print '<b>',
57: elif name=="nationalite":
58: print '<tr><th>Nationalité</th><td>',
59: elif name=="naissance":
60: print '<tr><th>Naissance</th><td>',
61: elif name=="site":
62: print '<tr><th>Site web</th><td><a href="',attrs['url'],'">',attrs['url'],'</a></td></tr>',
63: elif name=="photo":
64: print '<tr><th>Photo</th><td><img src="',attrs['source'],'" alt="',attrs['alt'],'" /></td></tr>',
65:
66:
67:
68:
69:
70:
71: def endElement(self, name):
72: "ce que l'on fait pour chaque balise fermante"
73:
74: if name=="nom":
75: print '</h2>'
76: print '<h3>Fiche signalétique</h3>'
77: print '<table>'
78: elif name=="p":
79: print '</p>'
80: elif name=="refacteur":
81: print '</strong>',
82: elif name=="film":
83: print '</em>',
84: elif name=="annee":
85: print '</b>',
86: elif name=="nationalite" or name=="naissance":
87: print '</td></tr>'
88:
89:
90:
91:
92:
93: def characters(self, content):
94: "ce que l'on fait pour le texte"
95:
96: print content.encode("utf-8"),
97:
98:
99:
100:
101: # Parsing d'un fichier d'acteurs
102:
103: fh = ActorsHandler()
104:
105: parser = make_parser()
106:
107: parser.setContentHandler(fh)
108:
109: parser.parse(sys.argv[1]) # on parse le fichier donné en argument
110:
111: