I've been trying to parse the following XML file with the .NET XMLTextReader:
<?xml version="1.0"?><level1><level2><level3>Test</level3><level3>Test2</level3></level2><level2><level3>Test</level3><level3>Test2</level3><level3><level4>TEST<level5>TEST5</level5>TESTP</level4><level4>Test4</level4></level3></level2></level1>
However, the resulting output does not seem to make any sense:
Start Element: level1 @ 0
Start Element: level2 @ 1
Start Element: level3 @ 2
CDATA: Test @ 2
Start Element: level3 @ 2
CDATA: Test2 @ 2
CDATA: @ 1
Start Element: level2 @ 1
Start Element: level3 @ 2
CDATA: Test @ 2
Start Element: level3 @ 2
CDATA: Test2 @ 2
Start Element: level3 @ 2
Start Element: level4 @ 3
CDATA: TEST @ 4
CDATA: TEST5 @ 4
CDATA: TESTP @ 3
Start Element: level4 @ 3
CDATA: Test4 @ 3
CDATA: @ 2
CDATA: @ 1
CDATA: @ 0
Notice how "TEST" and "TESTP" are both contents of the "<level4>" tag, yet XMLTextReader thinks that they are at different levels. Furthermore, the "<level5>" tag is completely ignored as a "Start Element". What's going on? I thought mixing contents in an element was allowed.
Relevant Portion of my code:
public void Parse2()
{
while(MyXMLReader.Read())
{
if (MyXMLReader.IsStartElement())
{
Console.WriteLine("Start Element: " + MyXMLReader.Name + " @ " + MyXMLReader.Depth);
}
else
{
Console.WriteLine("CDATA: " + MyXMLReader.ReadString() + " @ " + MyXMLReader.Depth);
}
}
}
Thanks.