Hello,
First load xml file to XMLDocuemnt.
After fill DataSet through XMLDocument.
Now for loop through each table in DataSet.
Get row table and get into DefaultView for sorting ParentID
So PatentID = 0 is getting first.
After then forloop through added node in Treeview
Try following code to Bind TreeView
public void BindXMLData(string path)
{
trvXmlData.Nodes.Clear();
if (File.Exists(path))
{
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(fs);
using (DataSet ds = new DataSet())
{
ds.ReadXml(new XmlNodeReader(doc));
TreeNode ParentNode = new TreeNode();
foreach (DataTable tab in ds.Tables)
{
if (tab.TableName == "table")
{
ParentNode.Text = tab.TableName;
trvXmlData.Nodes.Add(ParentNode);
}
else
{
DataView dv = tab.DefaultView;
//apply the sort on CustomerSurname column
dv.Sort = "ParentId,Id";
//save our newly ordered results back into our datatable
DataTable tab1 = dv.ToTable(true, "Industry", "ParentId");
TreeNode ChileLevel1Node = new TreeNode();
foreach (DataRow row in tab1.Rows)
{
if (row["ParentID"].ToString() == "0")
{
ChileLevel1Node.Text = row["Industry"].ToString();
ParentNode.ChildNodes.Add(ChileLevel1Node);
}
else
{
TreeNode ChildNode = new TreeNode(row["Industry"].ToString());
ChileLevel1Node.ChildNodes.Add(ChildNode);
}
}
}
}
fs.Close();
}
}
}
Note :: There is no need to modify XML file.
Hope this helpful!
Happy Coding J
Thanks