Ben sinds een week of 2 bezig met C# en programmeren in het algemeen en ik loop nu tegen een probleem aan waar ik niet uit kom. Google kan mij ook niet helpen, vandaar dat ik het hier maar probeer.
Ik probeer een XML file in te lezen en de regels tussen <tr en </tr> in een jagged array te krijgen. Wat ik gemaakt heb compiled prima, maar ik krijg tijdens runtime een error "Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object."
Ik begrijp hier uit dat ik iets niet goed gedeclareerd/geinitialiseerd/whatever heb, maar ik begrijp niet goed hoe dat dan zou moeten. De sourcecode volgt hieronder, maar de regel(s) waar de error door onstaat is "XMLSections[row][column] = Line;" wanneer ik deze uitcommentarieer loopt het programma prima door al zijn loops.
Is er iemand die weet hoe ik dit op kan lossen? Bij voorbaat dank.
De versie van het .NET Framework die ik gebruik is trouwens 1.1.4322
Ik probeer een XML file in te lezen en de regels tussen <tr en </tr> in een jagged array te krijgen. Wat ik gemaakt heb compiled prima, maar ik krijg tijdens runtime een error "Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object."
Ik begrijp hier uit dat ik iets niet goed gedeclareerd/geinitialiseerd/whatever heb, maar ik begrijp niet goed hoe dat dan zou moeten. De sourcecode volgt hieronder, maar de regel(s) waar de error door onstaat is "XMLSections[row][column] = Line;" wanneer ik deze uitcommentarieer loopt het programma prima door al zijn loops.
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
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
65
66
67
68
69
| using System;
using System.IO;
using System.Text.RegularExpressions;
class RWxml
{
public static void Main()
{
//open file
FileStream ExcelHTM = new FileStream("Alberttemp2.htm", FileMode.Open);
StreamReader FStreamIn = new StreamReader(ExcelHTM);
//string XML contains complete contents of alberttemp2.htm
string XML = FStreamIn.ReadToEnd();
//Close file
FStreamIn.Close();
//Every row of XMLModified contains a single line from string XML. XML is split by newline character.
string[] XMLModified=XML.Split('\n');
//Jagged array XMLSections. Not very efficient, because XMLModified.Lenght is always a lot longer than XMLSections
//Don't now how to avoid this (yet) though.
string[][] XMLSections = new string[XMLModified.Length][];
//create new regex to look for start of tr in XML file
Regex TableStart = new Regex("<tr ");
//create new regex to look for end of tr in XML file
Regex TableEnd = new Regex("</tr>");
bool StartFillingArray = false;
int row = 0;
int column = 0;
//check every line in XMLModified.
foreach(string Line in XMLModified)
{
//create new matches for regexes created above.
Match FoundStart = TableStart.Match(Line);
Match FoundEnd = TableEnd.Match(Line);
//If <tr was found in string line, put value of line in XMLSections[row][column]
//and set StartFillingArray to true so array XMLSections can be filled with all lines between <tr and </tr>
if(FoundStart.Success)
{
XMLSections[row][column] = Line;
column++;
StartFillingArray = true;
}
//If </tr> was found in string line, put value of line in XMLSections[row][column]
//Set StartFillingArray to false to prevent lines other than the lines between <tr and </tr> to be filled
//into XMLSections Array
else if(FoundEnd.Success)
{
XMLSections[row][column] = Line;
row++;
column = 0;
StartFillingArray = false;
}
//If StartFillingArray is set to true, start filling XMLSectionsArray with all lines between <tr and </tr>
else if(StartFillingArray == true)
{
XMLSections[row][column] = Line;
column++;
}
}
}
} |
Is er iemand die weet hoe ik dit op kan lossen? Bij voorbaat dank.
De versie van het .NET Framework die ik gebruik is trouwens 1.1.4322
[ Voor 9% gewijzigd door DaNose op 30-05-2004 01:18 ]