Populating TreeView Using XElement in C#
To populate a TreeView using XElement class in C#
You can parse an XML document using XElement class available in System.Xml.Linq namespace. The following code can be used to populate a Windows Forms TreeView control using XElement .
XML Content
<?xml version="1.0" encoding="utf-8" ?>
<States>
<State name="Tamilnadu">
<Regions>
<Region name="North">
<City name="Chennai" />
<City name="Vellore" />
</Region>
<Region name="South">
<City name="Madurai"/>
<City name="Trichy"/>
</Region>
<Region name="West">
<City name="Coimbatore"/>
<City name="Erode"/>
</Region>
</Regions>
</State>
<State name="Andhra">
<Regions>
<Region name="Rayalaseema">
<City name ="Chittoor"/>
<City name="Kurnool"/>
</Region>
<Region name="Telangana">
<City name="Hydrabad" />
<City name="Warangal" />
<City name="Nizamabad" />
</Region>
</Regions>
</State>
</States>
C# Code to Populate TreeView
using System;
using System.Windows.Forms;
using System.Xml.Linq;
private void button1_Click(object sender, EventArgs e)
{
var xmlData = XElement.Load(@"C:\Work\States.xml");
TreeNode treeNode = treeView1.Nodes.Add("India");
LoadXmlElements(xmlData, treeNode);
}
private void LoadXmlElements(XElement xElem, TreeNode treeNode)
{
foreach (XElement element in xElem.Elements())
{
if (element.HasElements)
{
if (element.FirstAttribute != null)
{
TreeNode tempNode = treeNode.Nodes.Add(element.FirstAttribute.Value);
LoadXmlElements(element, tempNode);
}
else
LoadXmlElements(element, treeNode);
}
else
treeNode.Nodes.Add(element.FirstAttribute.Value);
}
}