C#读取XML文件的内容

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

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

<protocol>
  <packet TypeId="0" name="成绩">
    <protocolData>
      <Chinese>语文</Chinese>
      <English>Chinese</English>
      <Bit>90</Bit>
    </protocolData>
    <protocolData>
      <Chinese>数学</Chinese>
      <English>Math</English>
      <Bit>95</Bit>
    </protocolData>
    <protocolData>
      <Chinese>英语</Chinese>
      <English>English</English>
      <Bit>93</Bit>
    </protocolData>
  </packet>
</protocol>
2、下面的代码包含选择要打开的文件和读取的过程,放在同一个方法下面了。

public List<string> listNode;
public void importProtocol()
        {
            try
            {
                //声明一个List<string>对象,用来保存需要存储的结点内容
                listNode = new List<string>();
                //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<string>中和字典序列中,这个大家可以根据需要自行选择存储方式。我选择List<string>是为了将从XML文件中获取的内容保存到Excel中。下一篇将给出以List<string>为参数对象的方法,将其保存到Excel中。

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值