Try:private void ConstructTree(XmlNode root,TreeNode node){
foreach(XmlNode xn in root.ChildNodes){
if(xn.NodeType == XmlNodeType.Element)
ConstructTree(xn, node.Nodes.Add(xn.Name));
else if(xn.NodeType == XmlNodeType.Text)
node.Nodes.Add(xn.Value);
}
}
Usage:private void button_Click(object sender, System.EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"Stories.xml");
XmlNode root = doc.DocumentElement;
TreeNode troot = this.treeView1.Nodes.Add(root.Name);
ConstructTree(root,troot);
}
foreach(XmlNode xn in root.ChildNodes){
if(xn.NodeType == XmlNodeType.Element)
ConstructTree(xn, node.Nodes.Add(xn.Name));
else if(xn.NodeType == XmlNodeType.Text)
node.Nodes.Add(xn.Value);
}
}
Usage:private void button_Click(object sender, System.EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"Stories.xml");
XmlNode root = doc.DocumentElement;
TreeNode troot = this.treeView1.Nodes.Add(root.Name);
ConstructTree(root,troot);
}
<story story2>You may replace them with : <story id="story1">
<story id="story2">If you want to preverse those attributes,you can alter the ConsturctTree method.One possible approach is:private void ConstructTree(XmlNode root,TreeNode node){
foreach(XmlNode xn in root.ChildNodes){
if(xn.NodeType == XmlNodeType.Element)
{
TreeNode nn = node.Nodes.Add(xn.Name);
if(xn.Attributes.Count > 0)
foreach(XmlAttribute an in xn.Attributes)
nn.Nodes.Add(an.Name + "=" + an.Value);
ConstructTree(xn,nn);
}
else if(xn.NodeType == XmlNodeType.Text)
node.Nodes.Add(xn.Value);
}
}