C#把xml文件加载到TreeView控件上

C#把xml文件加载到TreeView控件上

读取xml文件可以用XDocument和XMLDocument这两种技术,我在本博客上用的是XDoc技术,下一篇再介绍使用XMLDocument读取XML的代码
下面是原始XML文件





  <!ELEMENT student (name,course,score)>
  <!ATTLIST student id CDATA #REQUIRED>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT course (#PCDATA)>
  
  <!ELEMENT score (#PCDATA)>
]>

<scores>
  <student id="1">
    <name>张三name>
    <course>Javacourse>
    <score>90score>
  student>
  <student id="2">
    <name>李四name>
    <course>C#course>
    <score>100score>
  student>
  <student id="3">
    <name>王五name>
    <course>汇编course>
    <score>98score>
  student>
scores>

下面是读取XML的C#代码

using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Windows.Forms;

namespace Treeview练习
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //使用xDocument来读取xml文件
            XDocument document = XDocument.Load("Student.xml");
            //取出根节点
            XElement rootElement = document.Root;
            //将xml文件的根元素加载到treeview的根节点上
            TreeNode rootNode = treeView1.Nodes.Add(rootElement.Name.ToString());
            //用递归加载XML到TreeView中
            LoadxmlToTreeView(rootElement, rootNode.Nodes);
        }
        private void LoadxmlToTreeView(XElement rootElement,TreeNodeCollection treeNodeCollection)
        {
            foreach (XElement x in rootElement.Elements())
            {
                IEnumerable<XElement> elements = x.Elements();
               //判断该元素是否是叶子元素,即下面是否还有子元素
               //如果有子元素则只添加元素名称,如果是叶子元素则添加元素名称和元素内容
                if(ReturnNumber(elements)==0)
                {
                    TreeNode xnode = treeNodeCollection.Add(x.Name.ToString()).Nodes.Add(x.Value.ToString());
                }
                else
                {
                    TreeNode xnode = treeNodeCollection.Add(x.Name.ToString());
                    LoadxmlToTreeView(x, xnode.Nodes);
                }
               
            }
        }/// 
        /// 返回传入的集合中元素的个数
        /// 
        /// 
        /// 
        private int ReturnNumber(IEnumerable<XElement> xElements)
        {
            int count = 0;
            foreach(var x in xElements)
            {
                count++;
            }
            return count;
        }
    }
}


效果如下:
C#把xml文件加载到TreeView控件上_第1张图片
学习参考视频

你可能感兴趣的:(C#,其他,加载XML到TreeView上,XML和TreeView,XDocument,C#和TreeView,C#和XDocument)