Ik heb een stukje code geschreven waarmee ik een xml export inlees. Het probleem is dat deze export geen valid xml is. Aan dit feit kan niets veranderd worden, ik zal het probleem dus in mijn code moeten ondervangen.
Een xml element ziet er als volgt uit
Als een veld niet is ingevuld in het pakket dat de export maakt ontbreekt dit veld ook in de export, ik mis dus een element in mijn xml!
Mijn code om de xml te lezen ziet er als volgt uit:
Kan ik op de een of andere manier in de linq query controleren of deze bestaat en als dit niet zo is een standaard waarde gebruiken? Uiteraard kan ik gewoon 'traditioneel' door de xml heen lopen maar ik wil graag linq gebruiken omdat het zo snel is.
Ik denk aan iets als (pseudo code):
Hopelijk weet iemand een goede oplossing!
Een xml element ziet er als volgt uit
XML:
1
2
3
4
5
6
7
8
9
10
11
12
| <Medewerker_koppeling_AD> <EmId>1234</EmId> <Voornaam>Pietje</Voornaam> <Voorletters>P.</Voorletters> <Achternaam>Puk</Achternaam> <Status_dienstverband_code>I</Status_dienstverband_code> <BiMo>Postbode</BiMo> <BiYe>TNT</BiYe> <Vestiging>Keteldorp</Vestiging> <Geboortedatum>1950-01-01</Geboortedatum> <Geslacht>Man</Geslacht> </Medewerker_koppeling_AD> |
Als een veld niet is ingevuld in het pakket dat de export maakt ontbreekt dit veld ook in de export, ik mis dus een element in mijn xml!
Mijn code om de xml te lezen ziet er als volgt uit:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| private IEnumerable<User> getAllEmployees() { try { IEnumerable<User> userList = from c in xmlDoc.Descendants("Medewerker_koppeling_AD") select new User() { EmployeeNumber = int.Parse(c.Element("EmId").Value), FirstName = c.Element("Voornaam").Value, Initials = c.Element("Voorletters").Value, Name = c.Element("Achternaam").Value, }; return userList; } catch (Exception e) { throw new xmlDocumentParseException("Error during parsing xmlDocument", e); } } } |
Kan ik op de een of andere manier in de linq query controleren of deze bestaat en als dit niet zo is een standaard waarde gebruiken? Uiteraard kan ik gewoon 'traditioneel' door de xml heen lopen maar ik wil graag linq gebruiken omdat het zo snel is.
Ik denk aan iets als (pseudo code):
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| private IEnumerable<User> getAllEmployees() { try { IEnumerable<User> userList = from c in xmlDoc.Descendants("Medewerker_koppeling_AD") select new User() { if(exist(c.Element("EmId")) EmployeeNumber = int.Parse(c.Element("EmId").Value), else EmployeeNumber = 0, FirstName = c.Element("Voornaam").Value, Initials = c.Element("Voorletters").Value, Name = c.Element("Achternaam").Value, }; return userList; } catch (Exception e) { throw new xmlDocumentParseException("Error during parsing xmlDocument", e); } } } |
Hopelijk weet iemand een goede oplossing!