C#读取XML文件的内容

来源:互联网 发布:unity3d机械拆装 编辑:程序博客网 时间:2024/05/04 10:12

在项目中需要用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中。

0 0
原创粉丝点击