I've written an example to show you what is going on.
Using this xml snippet
="1.0"="UTF-8"
<level1 dateGenerated="2015-01-23T00:00:00">
<level2>
<level3>some data</level3>
<level3>some more data</level3>
</level2>
</level1>
This code
DataSet ds = new DataSet();
ds.ReadXml(@"c:\temp\test2.xml");
for (var i = 0; i < ds.Tables.Count; i++)
{
var dt = ds.Tables[i];
Console.WriteLine("Table {0} - {1} : {2}", i, dt.TableName, dt.Rows.Count);
}
produces this output
Table 0 - level1 : 1
Table 1 - level2 : 1
Table 2 - level3 : 2
As John C Rayan has pointed out - you get a table per high-level node.
But notice what happens if you remove the
dateGenerated
attribute...
="1.0"="UTF-8"
<level1>
<level2>
<level3>some data</level3>
<level3>some more data</level3>
</level2>
</level1>
Now when you run the above code you get these results
Table 0 - level2 : 1
Table 1 - level3 : 2
The highest level node "level1" no longer contains anything of interest and only the subsequent nodes are read into tables.
If I now add some code to dig into those tables
for (var j = 0; j < dt.Rows.Count; j++)
Console.WriteLine(" Data: {0}", dt.Rows[j].ItemArray[0]);
I get the following output
Table 0 - level2 : 1
Data: 0
Table 1 - level3 : 2
Data: some data
Data: some more data
If I push your original xml through my little program I get this
Table 0 - CONSOLIDATED_LIST : 1
Data: 0 2015-01-23T00:00:00
Table 1 - INDIVIDUALS : 1
Data: 0 0
Table 2 - INDIVIDUAL : 5
Data: 1 Hitesh
Data: 2 Jitesh
Data: 3 Ritesh
Data: 4 Mitesh
Data: 5 Nitesh
Table 3 - ENTITY : 1
Data: 0 0
Table 4 - ENTITIES : 3
Data: 11 Hitesh
Data: 12 Hitesh
Data: 13 Hitesh
Essentially
ReadXml
is attempting to mimic the "structure" of your xml file in the absence of a schema. More details
here[
^]