Advertisement
Razzim

interpretowane Zadanie3

Nov 13th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. #zadanie podpunkt 1 - sax
  2.  
  3. import xml.sax
  4.  
  5. class Student:
  6. imie = ""
  7. nazwisko = ""
  8.  
  9. class Adres:
  10. ulica = ""
  11. numer = 0
  12. miejscowosc = ""
  13.  
  14. studenci = []
  15. adresy = []
  16.  
  17. class ExampleFileHandler(xml.sax.ContentHandler):
  18. def __init__(self):
  19. self.inElement = False
  20. self.inPotomek = False
  21. self.text = ""
  22. def startElement(self, name, attrs):
  23. if name == "student":
  24. self.inElement = True
  25. for (k,v) in attrs.items():
  26. print(v.strip())
  27. if name == "adres":
  28. self.inPotomek = True
  29.  
  30. def characters(self, ch):
  31. if self.inElement and self.inPotomek:
  32. print("characters",ch.strip())
  33. self.text += ch
  34.  
  35. def endElement(self,name):
  36. if name == 'student':
  37. print (self.text.strip())
  38. self.inElement = False
  39. self.text = ""
  40. if name == 'adres':
  41. self.inPotomek = False
  42.  
  43. parser = xml.sax.make_parser()
  44. parser.setContentHandler(ExampleFileHandler())
  45. parser.parse(open("osoby.xml", "r"))
  46.  
  47. for student in studenci:
  48. print(student.imie, student.nazwisko)
  49.  
  50. for adres in adresy:
  51. print(adres.ulica, adres.numer, adres.miejscowosc)
  52.  
  53.  
  54.  
  55. #zadanie podpunkt 2 minidom
  56.  
  57. from xml.dom import minidom
  58.  
  59. doc = minidom.parse('osoby.xml')
  60. #node = doc.documentElement
  61. lstudent = doc.getElementsByTagName('student')
  62.  
  63. class Student:
  64. imie = ""
  65. nazwisko = ""
  66.  
  67. class Adres:
  68. ulica = ""
  69. numer = 0
  70. miejscowosc = ""
  71.  
  72. studenci = []
  73. adresy = []
  74.  
  75. for elem in lstudent:
  76. ladres = elem.getElementsByTagName('adres')
  77. x = Student()
  78. x.imie = elem.attributes['imie'].value
  79. x.nazwisko = elem.attributes['nazwisko'].value
  80. studenci.append(x)
  81.  
  82. for elem in ladres:
  83. x = Adres()
  84. x.ulica = elem.getElementsByTagName("ulica")[0].childNodes[0].data.strip()
  85. x.numer = elem.getElementsByTagName("numer")[0].childNodes[0].data.strip()
  86. x.miejscowosc = elem.getElementsByTagName("miejscowosc")[0].childNodes[0].data.strip()
  87. adresy.append(x)
  88.  
  89. for student in studenci:
  90. print(student.imie, student.nazwisko)
  91.  
  92. for adres in adresy:
  93. print(adres.ulica, adres.numer, adres.miejscowosc)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement