怎样用递归遍历xml文件到TreeView 怎样用递归遍历xml文件到TreeView 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.xml----------------------------------------<?xml version="1.0" encoding="utf-8"?><Test> <TestNode1> <ChildNode1/> <ChildNode2/> <ChildNode3/> <ChildNode4/> </TestNode1> <TestNode2> <ChildNode5/> <ChildNode6/> </TestNode2> <TestNode3> <ChildNode7/> </TestNode3></Test>XmlDocument xml = new XmlDocument();xml.Load(@"C:\1.xml");XmlNode root = xml.SelectSingleNode("Test");TreeNode treeroot = new TreeNode(root.Name);this.treeView1.Nodes.Add(treeroot); //添加根节点BindTreeView(root,treeroot);//---------------------------------------------------------private void BindTreeView(XmlNode node, TreeNode tn){ foreach (XmlNode n in node.ChildNodes) { TreeNode childnode = new TreeNode(n.Name); tn.Nodes.Add(childnode); if (n.ChildNodes.Count > 0) { BindTreeView(n, childnode); } }} XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load("");XmlNodeList xmlNodes = xmlDoc.DocumentElement.ChildNodes;this.treeView1.BeginUpdate();this.treeView1.Nodes.Clear();XmlNode2TreeNode(xmlNodes, this.treeView1.Nodes);this.treeView1.EndUpdate(); private void XmlNode2TreeNode(XmlNodeList xmlNode, TreeNodeCollection treeNode) { foreach (XmlNode var in xmlNode) { if (var.NodeType != XmlNodeType.Element) { continue; } TreeNode newTreeNode = new TreeNode(); newTreeNode.Text = var.Attributes["Title"].Value; if (var.HasChildNodes) { if (var.ChildNodes[0].NodeType == XmlNodeType.CDATA) { newTreeNode.Tag = var.ChildNodes[0].Value; } XmlNode2TreeNode(var.ChildNodes, newTreeNode.Nodes); } treeNode.Add(newTreeNode); } }http://www.codeproject.com/KB/tree/treeviewxml.aspx 你要编立什么样的XML啊xml不一样,在遍历判断的就不一样啊!~~ 送分 怎样处理多媒体文件 c#怎么预览SQL中图片? 看完了C++,但是准备学C# Microsoft Visual Studio .NET 2003 可以打补丁吗? (在线等)为什么用C#.net读Foxpro中的数据时,数据的排列跟Foxpro中的不一样? 如何将IList转换为DataTable? c# Webbrowser控件 怎样控制它的大小?? repeater里的绑定问题 C#初学者的若干问题 学习中遇到的小问题,请高手费心了 msdn 不能用,网页显示不出来,急!!
1.xml
----------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<Test>
<TestNode1>
<ChildNode1/>
<ChildNode2/>
<ChildNode3/>
<ChildNode4/>
</TestNode1>
<TestNode2>
<ChildNode5/>
<ChildNode6/>
</TestNode2>
<TestNode3>
<ChildNode7/>
</TestNode3>
</Test>XmlDocument xml = new XmlDocument();
xml.Load(@"C:\1.xml");
XmlNode root = xml.SelectSingleNode("Test");
TreeNode treeroot = new TreeNode(root.Name);
this.treeView1.Nodes.Add(treeroot); //添加根节点
BindTreeView(root,treeroot);//---------------------------------------------------------private void BindTreeView(XmlNode node, TreeNode tn)
{
foreach (XmlNode n in node.ChildNodes)
{
TreeNode childnode = new TreeNode(n.Name);
tn.Nodes.Add(childnode);
if (n.ChildNodes.Count > 0)
{
BindTreeView(n, childnode);
}
}
}
xmlDoc.Load("");
XmlNodeList xmlNodes = xmlDoc.DocumentElement.ChildNodes;
this.treeView1.BeginUpdate();
this.treeView1.Nodes.Clear();
XmlNode2TreeNode(xmlNodes, this.treeView1.Nodes);
this.treeView1.EndUpdate(); private void XmlNode2TreeNode(XmlNodeList xmlNode, TreeNodeCollection treeNode)
{
foreach (XmlNode var in xmlNode)
{
if (var.NodeType != XmlNodeType.Element)
{
continue;
}
TreeNode newTreeNode = new TreeNode();
newTreeNode.Text = var.Attributes["Title"].Value;
if (var.HasChildNodes)
{
if (var.ChildNodes[0].NodeType == XmlNodeType.CDATA)
{
newTreeNode.Tag = var.ChildNodes[0].Value;
}
XmlNode2TreeNode(var.ChildNodes, newTreeNode.Nodes);
}
treeNode.Add(newTreeNode);
}
}
http://www.codeproject.com/KB/tree/treeviewxml.aspx
xml不一样,在遍历判断的就不一样啊!~~