Hallo,
ik ben wat aan het klooien met C# (om precies te zijn: ik probeer een XML bestand uit te lezen in een multidemensionale array)
Ik gebruik daarvoor de volgende code:
Het XML bestand ziet er zo uit:
Nou krijg ik bij het debuggen de fout "System.NullReferenceException was unhandled" bij "this.DB[i, 0] = ServerProperty.InnerText; ". Ik zou echt niet weten wat het probleem is. Het rare is dat ik onder Debug->Window->Locals wel gewoon "ServerProperty" met Name en InnerText op de juiste waarde zie staan, dus hij leest het wel. Bij datzelfde locals schermpje staat "this.DB" overigens met value "null" en type "string[,]"
Weet iemand wat ik fout doe
ik ben wat aan het klooien met C# (om precies te zijn: ik probeer een XML bestand uit te lezen in een multidemensionale array)
Ik gebruik daarvoor de volgende code:
C#:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| class ServerDB { protected string ServerXMLFile; public string[,] DB; #knip public ServerDB(string ServerXMLFile) { this.ServerXMLFile = ServerXMLFile; this.ReadServers(); } #knip protected bool ReadServers() { try { // Open Document en laad bestand XmlDocument XmlReader = new XmlDocument(); XmlReader.Load(this.ServerXMLFile); // verkgrijg een lijstje van alle servers XmlNodeList ServerList = XmlReader.GetElementsByTagName("server"); // vertel de compiler hoe groot we de string willen hebben this.DB = new string[ServerList.Count, 3]; // Doorloop het lijstje met servers for (int i = 0; i < ServerList.Count; i++) { // Verkrijg de server XmlNode Server = ServerList.Item(i); XmlNodeList ServerProperties = Server.ChildNodes; // doorloop de childs (=eigenschappen) van de server for (int j = 0; j < ServerProperties.Count; j++) { // Verkrijg de huidige eigenschap XmlNode ServerProperty = ServerProperties.Item(j); // Zet de eigenschap op de juiste plaats switch (ServerProperty.Name) { case "name": this.DB[i, 0] = ServerProperty.InnerText; break; case "rlist": this.DB[i, 1] = ServerProperty.InnerText; break; case "plist": this.DB[i, 2] = ServerProperty.InnerText; break; } } } } catch (XmlException e) { // Wat foutafhandeling return false; } return true; } } |
Het XML bestand ziet er zo uit:
XML:
1
2
3
4
5
6
7
8
9
10
11
| <ServerDB> <server> <name>Test</name> <rlist>Iets</rlist> </server> <server> <name>Test2</name> <rlist>Nogiets</rlist> <plist>En nog iets</rlist> </server> </ServerDB> |
Nou krijg ik bij het debuggen de fout "System.NullReferenceException was unhandled" bij "this.DB[i, 0] = ServerProperty.InnerText; ". Ik zou echt niet weten wat het probleem is. Het rare is dat ik onder Debug->Window->Locals wel gewoon "ServerProperty" met Name en InnerText op de juiste waarde zie staan, dus hij leest het wel. Bij datzelfde locals schermpje staat "this.DB" overigens met value "null" en type "string[,]"
Weet iemand wat ik fout doe
[ Voor 0% gewijzigd door een moderator op 26-09-2007 17:28 . Reden: C#, XML attribuut aan code-tags toegevoegd ]