1+ '''
2+
3+ Introduction To Computing Using Python (Werkboek)
4+
5+ Final Assignment: XML-stationslijsten
6+ In deze opdracht lees je gegevens uit een XML-bestand. Dit bestand is op de
7+ volgende bladzijde gegeven. Het bestand kun je overnemen voor je eigen
8+ programma: en bevat de gegevens van vier stations. Van ieder station is
9+ staat vermeld:
10+
11+ - Code
12+ - Type
13+ - Namen (Kort, Middel & Lang)
14+ - Land
15+ - Synoniemen (niet altijd aanwezig)
16+
17+ Lees de gegevens uit het bestand en plaats deze in een dict! Laat je programma
18+ nu achtereenvolgens de onderstaande gegevens afdrukken op het scherm:
19+
20+ 1. Van alle stations de code en het type.
21+ 2. Van alle stations de code en synoniemen (maar alleen als er
22+ synoniemen zijn).
23+ 3. Van alle stations de code en de lange naam.
24+
25+ Let op: bij stap 2 mag je de dict met alle synoniemen uitprinten, maar dat kan
26+ natuurlijk netter. Bij stap 3 is het de bedoeling dat je wel netjes de lange
27+ naam van een station uit de namen-dict haalt!
28+
29+ Mogelijke uitvoer:
30+ Dit zijn de codes en types van de 4 stations:
31+ HT - knooppuntIntercitystation
32+ ALMO - stoptreinstation
33+ ATN - stoptreinstation
34+ ASA - intercitystation
35+
36+ Dit zijn alle stations met één of meer synoniemen:
37+ HT - OrderedDict([('Synoniem', ["Hertogenbosch ('s), 'Den Bosch'])])
38+
39+ Dit is de lange naam van elk station:
40+ HT - 's-Hertogenbosch
41+ ALMO - Almere Oostvaarders
42+ ATN - Aalten
43+ ASA - Amsterdam Amstel
44+
45+ '''
46+ import xmltodict
47+
48+ with open ('stations.xml' ) as file :
49+ document = xmltodict .parse (file .read ())
50+ # Codes en types van 4 stations.
51+ print ('Dit zijn de codes en types van de 4 stations:' )
52+ for station in document ['Stations' ]['Station' ]:
53+ print ('{0:4} - {1}' .format (station ['Code' ], station ['Type' ]))
54+
55+ # Stations met synoniemen.
56+ print ('\n Dit zijn alle stations met één of meer synoniemen:' )
57+ for station in document ['Stations' ]['Station' ]:
58+ if (station ['Synoniemen' ]):
59+ synoniemen = station ['Synoniemen' ]['Synoniem' ]
60+ print ('{0:4} - {1}' .format (station ['Code' ], ', ' .join (synoniemen )))
61+
62+ # Lange naam van elk station.
63+ print ('\n Dit is de lange naam van elk station:' )
64+ for station in document ['Stations' ]['Station' ]:
65+ print ('{0:4} - {1}' .format (station ['Code' ], station ['Namen' ]['Lang' ]))
0 commit comments