Voor een projectje probeer ik een parser te schrijven die een AIR-bestand kan inlezen. Dit is een bestand wat wordt aangemaakt door Amadeus. Een veel gebruikt software pakket bij reisbureaus en luchtvaartmaatschappijen. Het is een reserveringssysteem voor o.a. vliegtickets en in zo'n AIR bestand staat alle informatie (en meer) die ook op een vliegticket staat.
Van de meeste waarden in het bestand weet ik ook gewoon wat ze betekenen. Als je het bestand en de daadwerkelijke boeking in Amadeus naast elkaar ziet is daar al erg veel uit af te lezen. Zo staat in dit bestand de ticketnummer, vertrek data. vertrek plaats, aankomst plaats, ticket prijs en belastingen en nog wat informatie.
Ik probeer dus een parser te schrijven voor zulk soort bestanden maar voor mijn gevoel ben ik heel erg inefficiënt bezig. Als ik op internet zoek naar informatie over parsers schrijven kan ik niet echt wat nuttigs vinden dus ik hoop eigenlijk dat iemand hier wat websites of boeken kent waar ik wat meer informatie kan vinden. Met de parser moet het dus mogelijk zijn om een bestand in te lezen en dan om te zetten naar een normale data structuur, eventueel een eigen object waarin gewoon alle waarden gezet kunnen worden.
Ik kan niets aanpassen aan het formaat wat Amadeus eruit gooit, behalve dan het instellen van een ander teken ipv een #. Helaas word er geen xml-formaat ondersteund of iets dergelijks.
Iemand die me een zet in de goede richting kan geven?
Edit: Owhja, ze noemen het zelf pseudo-EDIFACT. Is gebaseerd op de EDIFACT standaard maar volgens mij op een compleet eigen wijze geïmplementeerd ofzo.
code:
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
| AIR-BLK205#7A##208#1900018128#GW3219280#001001 AMD 1900076428 GW3219279#GW3219280 MUC1A 3L6Y24008#0202#HAGN22101#57210296#HAGN22101#57210296#HAGN22101#57210296#####################IR TLKX7 A-IRAN AIR#IR 0965 B-TTP/ITR-EMLA C-7906/ AASU-AASU-I-0 D-090518#090519#090519 G-X ##AMSAMS# H-001#003OAMS#AMSTERDAM #IKA#TEHRAN KHOMEINI #IR 0764 V V 09JUL1530 2330 09JUL#OK02#S #0#AB6###20K###ET#0530 #N#2532# H-003#004OIKA#TEHRAN KHOMEINI #AMS#AMSTERDAM #IR 0765 Q Q 08OCT0415 0850 08OCT#OK02#B #0#AB6###20K###ET#0605 #N#2532# K-FEUR584.00 ############EUR631.44 ### KFTF# EUR14.80 YQ AD# EUR14.52 RN DP# EUR12.94 CJ SO# EUR5.18 IR AE########################## L- M-V83H91 #Q83H91 N-NUC377.77#358.85 O-XX31DEC#XX09OCT Q-AMS IR THR377.77IR AMS358.85NUC736.62END ROE0.792803 I-001#01ACHTERNAAM/VOORNAAM MR##APAMS 31 70 1234567 - NAAM REISBUREAU - A//E-EMAIL@ADRES.NL//E-NOGEEN@ADRES.NL## T-K001-1234567890 FEIR NOT END#S3-4#P1-2 FM*P*9#S3-4#P1-2 FPCASH FVIR TKOK18MAY/HAGN22101 I-002#02TACHTERNAAM/VOORNAAM MRS##APAMS 31 70 1234567 - NAAM REISBUREAU - A//E-EMAIL@ADRES.NL//E-NOGEEN@ADRES.NL## T-K001-1234567890 FEIR NOT END#S3-4#P1-2 FM*P*9#S3-4#P1-2 FPCASH FVIR TKOK18MAY/HAGN22101 ENDX |
Van de meeste waarden in het bestand weet ik ook gewoon wat ze betekenen. Als je het bestand en de daadwerkelijke boeking in Amadeus naast elkaar ziet is daar al erg veel uit af te lezen. Zo staat in dit bestand de ticketnummer, vertrek data. vertrek plaats, aankomst plaats, ticket prijs en belastingen en nog wat informatie.
Ik probeer dus een parser te schrijven voor zulk soort bestanden maar voor mijn gevoel ben ik heel erg inefficiënt bezig. Als ik op internet zoek naar informatie over parsers schrijven kan ik niet echt wat nuttigs vinden dus ik hoop eigenlijk dat iemand hier wat websites of boeken kent waar ik wat meer informatie kan vinden. Met de parser moet het dus mogelijk zijn om een bestand in te lezen en dan om te zetten naar een normale data structuur, eventueel een eigen object waarin gewoon alle waarden gezet kunnen worden.
Ik kan niets aanpassen aan het formaat wat Amadeus eruit gooit, behalve dan het instellen van een ander teken ipv een #. Helaas word er geen xml-formaat ondersteund of iets dergelijks.
Iemand die me een zet in de goede richting kan geven?
Edit: Owhja, ze noemen het zelf pseudo-EDIFACT. Is gebaseerd op de EDIFACT standaard maar volgens mij op een compleet eigen wijze geïmplementeerd ofzo.
"Write code as if the next maintainer is a vicious psychopath who knows where you live."