读入XML文件生成TreeView,并在树的每个节点加上CheckBox
XML文件
<?xml version="1.0" encoding="utf-8" ?>
<!-- -->
<Transaction>
<上传事务>
<专题数据上传>
</专题数据上传>
</上传事务>
<下发事务>
<基础数据下发>
</基础数据下发>
<专题数据下发>
<事务1>
<数据集1>
<图层1></图层1>
<图层2></图层2>
<图层3></图层3>
</数据集1>
</事务1>
<事务2>
<地理实体500>
<水系_500></水系_500>
<植被_500></植被_500>
<居民地_500></居民地_500>
<交通_500></交通_500>
<行政区划_500></行政区划_500>
<道路中心线_500></道路中心线_500>
</地理实体500>
</事务2>
</专题数据下发>
</下发事务>
</Transaction>
主窗体函数
private void Form1_Load(object sender, EventArgs e)
{
XmlDocument myXml = new XmlDocument();//新建一个XmlDocument类用于加载XML文件
myXml.Load(@"D:\Visual Studio 2008\Projects\DownLoadData\DownLoadData\TransactionTree.xml");//指定需加载的XML文件的路径名称
XmlNode root = myXml.DocumentElement;//获取XML文件的根节点
TreeNode tRoot = new TreeNode();
tRoot = treeView1.Nodes.Add(root.Name);//TreeView添加根节点
CreateTreeFromXml(root,tRoot);//传值,并且调用递归建树函数
treeView1.ExpandAll();//设置生成的TreeView节点全部展开
progressBar1.Hide();
treeView1.CheckBoxes = true;
}
建树函数
//读取Xml文件递归新建TreeView
public void CreateTreeFromXml(XmlNode node, TreeNode tNode)
{
if (node.HasChildNodes)//判断当前XML节点下有无子节点
{
foreach (XmlNode subNode in node.ChildNodes)//遍历特定XML文件节点的所有子节点
{
TreeNode tempTreeNode = tNode.Nodes.Add(subNode.Name);//在树节点下添加子节点
CreateTreeFromXml(subNode, tempTreeNode);//递归调用
}
}
}
最后效果
大功告成!
浙公网安备 33010602011771号