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);
}
}


Comments

No responses found. Be the first to comment...


  • Do not include your name, "with regards" etc in the comment. Write detailed comment, relevant to the topic.
  • No HTML formatting and links to other web sites are allowed.
  • This is a strictly moderated site. Absolutely no spam allowed.
  • Name:
    Email: