如何用Treeview树加载xml

1、新建一个winform项目。

2、就用默认的Form1做为窗体吧,给这个窗体上加载一个trreeview控件。

3、Form1的后天代码如下

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace TreeBandDingXml
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            // C#读入XML加载到TreeView 当前选中项:TreeView.SelectedNode
            //增加顶级节点:TreeView.Nodes.Add()
            //增加顶级节点的下级节点:TreeView.Nodes[0].Nodes.Add();
            //增加同级节点:TreeView.SelectedNode.Parent.Nodes.Add()
            //增加子节点:TreeView.SelectedNode.Nodes.Add()
            //全部展开:TreeView.ExpandAll()
            //全部收拢:TreeView.CollapseAll()
            //删除选中项:TreeView.Nodes.Remove(treeView1.SelectedNode);  

            //treeView1.SelectedNode.BeginEdit(); 首先在treeview选择事件afterSelect双击
            //在写代码
            //获取TreeView中树视图的深度(从零开始):treeView1.SelectedNode.Level

            //读取XML:

            string XmlFile = Application.StartupPath + "file://xmlfile1.xml/";
            XmlDocument doc = new XmlDocument();
            doc.Load(XmlFile);
            //获取文档的根
            //取得文档的根节点名称:doc.DocumentElement.Name
            XmlNode root = doc.DocumentElement;
            //首先删除所有的树节点
            treeView1.Nodes.Clear();
            //加载数据
            LoadXml(treeView1.Nodes, root);
            treeView1.ExpandAll();
        }

private void LoadXml(TreeNodeCollection treeNodes, XmlNode xmlNodes)
{
      string ship_name = string.Empty;

      XmlNode xmlNode = xmlNodes.SelectSingleNode("ship_name");
      if (xmlNode != null && xmlNode.InnerText != "arrangeResult")
           ship_name = xmlNode.InnerText;

      XmlNodeList tidanhao = xmlNodes.SelectNodes("tidanhao");
      TreeNode vTreeNode = null;

      if (string.IsNullOrEmpty(ship_name) && tidanhao.Count == 0)
      {

          //增加根节点
          vTreeNode = treeNodes.Add(xmlNodes.Name);
      }
      else
          if (!string.IsNullOrEmpty(ship_name) && ship_name != "arrangeResult")
      {
          vTreeNode = treeNodes.Add(ship_name);
          vTreeNode.Tag = ship_name;               
      }
      else if (tidanhao != null)
      {
          foreach (XmlNode node in tidanhao)
          {
               vTreeNode = treeNodes.Add(node.InnerText);
               vTreeNode.ImageIndex = 2;
               vTreeNode.SelectedImageIndex = 2;
               vTreeNode.Tag = node.InnerText;
          }
               
       }

      foreach (XmlNode vTemp in xmlNodes.SelectNodes("arrangeResult"))
      {
             LoadXml(vTreeNode.Nodes, vTemp);
      }

}
      

    }
}

4在项目中在新建一个xml文件,文件图如下


5、文件代码如下:

 


<?xml version="1.0" encoding="UTF-8"?>
-<调度结果查看> -<arrangeResult> <ship_name>番运122</ship_name> -<arrangeResult> <tidanhao>326071863A</tidanhao> </arrangeResult> </arrangeResult> -<arrangeResult> <ship_name>富粤128</ship_name> -<arrangeResult> <tidanhao>10HHP00661</tidanhao> </arrangeResult> </arrangeResult> -<arrangeResult> <ship_name>金龙338</ship_name> -<arrangeResult> <tidanhao>TSGZ10024080/P9KBC0382T</tidanhao> <tidanhao>COSU6031555570</tidanhao> </arrangeResult> </arrangeResult> -<arrangeResult> <ship_name>穗海韵688</ship_name> -<arrangeResult> <tidanhao>TSGZ10018333/P3PQC7169T</tidanhao> </arrangeResult> </arrangeResult> -<arrangeResult> <ship_name>粤安运08</ship_name> -<arrangeResult> <tidanhao>23883141</tidanhao> <tidanhao>GZE1001F0574</tidanhao> </arrangeResult> </arrangeResult> -<arrangeResult> <ship_name>粤安运09</ship_name> -<arrangeResult> <tidanhao>SZE1001F0231</tidanhao> </arrangeResult> </arrangeResult> </调度结果查看>

6、把做好的xml文件放到debug里面,然后运行程序,结果如下

7、这个是别人的教程,自己做了一遍留着吧

 

 

posted @ 2012-11-14 09:51  忘-语  阅读(395)  评论(0编辑  收藏  举报