forked from gregoriorobles/ptavi-p3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpractica3-chistes.py
65 lines (56 loc) · 1.68 KB
/
practica3-chistes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from xml.sax import make_parser
from xml.sax.handler import ContentHandler
class ChistesHandler(ContentHandler):
"""
Clase para manejar chistes malos
"""
def __init__(self):
"""
Constructor. Inicializamos las variables
"""
self.calificacion = ""
self.pregunta = ""
self.inPregunta = False
self.respuesta = ""
self.inRespuesta = False
def startElement(self, name, attrs):
"""
Método que se llama cuando se abre una etiqueta
"""
if name == 'chiste':
# De esta manera tomamos los valores de los atributos
self.calificacion = attrs.get('calificacion', "")
print(self.calificacion)
elif name == 'pregunta':
self.inPregunta = True
elif name == 'respuesta':
self.inRespuesta = True
def endElement(self, name):
"""
Método que se llama al cerrar una etiqueta
"""
if name == 'pregunta':
self.pregunta = ""
self.inPregunta = False
if name == 'respuesta':
self.respuesta = ""
self.inRespuesta = False
def characters(self, char):
"""
Método para tomar contenido de la etiqueta
"""
if self.inPregunta:
self.pregunta = self.pregunta + char
if self.inRespuesta:
self.respuesta += char
print(self.pregunta, self.respuesta)
if __name__ == "__main__":
"""
Programa principal
"""
parser = make_parser()
cHandler = ChistesHandler()
parser.setContentHandler(cHandler)
parser.parse(open('chistes2.xml'))