C#读取XML文件的内容

在项目中需要用C#程序读取XML文件内的内容,这里给大家做一个简单的例子用来演示C#的读取过程。

1、给出的XML文件内容如下所示:


  
    
      语文
      Chinese
      90
    
    
      数学
      Math
      95
    
    
      英语
      English
      93
    
  
2、下面的代码包含选择要打开的文件和读取的过程,放在同一个方法下面了。

public List listNode;
public void importProtocol()
        {
            try
            {
                //声明一个List对象,用来保存需要存储的结点内容
                listNode = new List();
                //listNode.Clear();

                //打开选择文件的窗口,选择文件,并将文件路径保存在path中
                OpenFileDialog openFileDialog = new OpenFileDialog();
                string path = "";
                openFileDialog.Title = "请选择导入文件";
                openFileDialog.Filter = "xml文件|*.xml";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    path = openFileDialog.FileName;//通过选择窗口找到文件的路径
                }

                //声明一个XmlDocument类对象,并将文件加载的对象中
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                //选择XML的根结点
                XmlNode protocol = doc.SelectSingleNode("protocol");
                XmlNodeList packet = protocol.ChildNodes;//根结点下的子孙结点列表
                                
                int i = 0;
                foreach (XmlNode p in packet)
                {
                    XmlElement xe = (XmlElement)p;//将根结点的孩子结点转换为一个XmlElement元素

                    XmlNodeList xnL = xe.ChildNodes;//获取XmlElement元素的孩子结点
                    int j = 0;
                    foreach (XmlNode x in xnL)//遍历得到语文,数学,英语的列表(其他注释的内容是我需要的,大家可以根据自己的情况进行存储)
                    {
                        string chi = x.FirstChild.InnerText.Replace("\"", "");
                        listNode.Add(chi);
                        //Console.WriteLine(x.FirstChild.InnerText + "*");
                        //dicChi.Add(i, chi);

                        //Console.WriteLine(x.LastChild.InnerText + "*");
                        //string bi = x.LastChild.InnerText.Replace("\"", "");
                        //dicBit.Add(i, bi);
                        //Console.WriteLine(xe1.InnerText);---输出所有孩子结点信息
                        i++;
                        j++;
                    }

                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("出错了" + ex.StackTrace);
            }
        }
根据自己XML文件的结构和特点获取对应的结点内容即可。在我的程序中保存在List中和字典序列中,这个大家可以根据需要自行选择存储方式。我选择List是为了将从XML文件中获取的内容保存到Excel中。下一篇将给出以List为参数对象的方法,将其保存到Excel中。

你可能感兴趣的:(C#)