745
26.10
Lösungen
Liefert die E-Mail-Adressen der Person mit dem Namen name.
Eine neue Person mit Namen
name wird in das DOM-Objekt eingefügt.
Sämtliche Daten der Person mit Namen
name werden entfernt.
26.10 Lösungen
Lösung 1
Im Prinzip wird dieser Graph durch Adjazenzlisten modelliert. Zu jedem Flughafen wird
angegeben, zu welchen Zielen man von dort aus gelangen kann.
def getAddresses(self, name):
def insertPerson(self, name):
def removePerson (self, name):
<?xml version="1.0" ?>
<fluglinie>
<flughafen name="Dortmund">
<ziel>München</ziel>
<ziel>Hamburg</ziel>
<ziel>Berlin</ziel>
</flughafen>
<flughafen name="Berlin">
<ziel>Dortmund</ziel>
<ziel>Hamburg</ziel>
</flughafen>
<flughafen name="München">
<ziel>Dortmund</ziel>
</flughafen>
<flughafen name="Hamburg">
<ziel>Dortmund</ziel>
<ziel>Berlin</ziel>
</flughafen>
</fluglinie>
Kapitel 26
XML
746
Lösung 2
def getAllAddresses (self):
# Liefert Dictionary, das zu jedem Namen eine Liste
# mit den zugehörigen E-Mail-Adressen enthält
d = {}
for p in self.doc.getElementsByTagName("person"):
name = p.getAttribute("name")
emails = p.getElementsByTagName("email")
d[name] = [e.firstChild.data for e in emails]
return d
def getAddresses(self, name):
# Liefert die E-Mail-Adressen der Person name
for p in self.doc.getElementsByTagName("person"):
if p.getAttribute("name") == name:
emails = p.getElementsByTagName("email")
return [e.firstChild.data for e in emails]
def insertPerson(self, name):
# Fügt neue Person mit Namen name ein
group = self.doc.documentElement
person = self.doc.createElement("person")
person.setAttribute("name", name)
group.appendChild(person)
def removePerson (self, name):
# Löscht Daten der Person mit Namen name
for p in self.doc.getElementsByTagName("person"):
if p.getAttribute("name") == name:
self.doc.documentElement.removeChild(p)
p.unlink()

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.