I have an xml structured like this:
Header
\-Timeseries (1-N)
\- Period (1-N)
\- Interval (1-N)
This is an approximate example:
<Header>
<Element />
<Timeseries>
<Element />
<Period>
<Element />
<Interval>
<Element />
</Interval>
</Period>
</Timeseries>
</Header>
I'm hoping to read the header elements until I hit Timeseries, then Timeseries elements until I hit Period, then Period until I hit Interval, and Interval until I hit the end of the Interval. When I'm finished with a Period, I'm writing all Intervals.
This particular document has 614 Timeseries with 1 Period per each Timeseries.
I'm parsing it with:
while (!xmlReader.EOF)
{
if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "Header")
{
while (xmlReader.Name != "Timeseries" && xmlReader.Read())
{
// read
}
}
else if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "Timeseries")
{
while (xmlReader.Name != "Period" && xmlReader.Read())
{
// read
}
}
else if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "Period")
{
while (xmlReader.Name != "Interval" && xmlReader.Read())
{
// read
}
}
else if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "Interval")
{
while (xmlReader.NodeType != XmlNodeType.EndElement && xmlReader.Read())
{
// read
}
}
else if (xmlReader.NodeType == XmlNodeType.EndElement && xmlReader.Name == "Period")
{
// write intervals
}
else
{
xmlReader.Read();
}
}
It appears that only 166/614 Periods are read. Therefore I must be gobbling up some xml, but am having trouble spotting the error.
Dumping the read shows that Timeseries 1-166 are correctly parsed, but somehow the parsing stops after that.