位置:首页 » 文章/教程分享 » C#读取xml的方法

最近在用C#语言开发项目的时候,客户要求在客户端记住登录的用户名,于是想到了用Xml的形式保存和读取登陆过的用户名的方法来实现。

过程如下

1. 首先,根据我的需求,只需要记住用户名即可,所有我设计的xml文件的格式为:

<?xml version="1.0" encoding="gb2312"?>
<userID>
  <user nameSeq="1" values="username1" />

  <user nameSeq="2" values="username2" />
</userID>

是不是很简单,就一个节点而已。

下面就以这个xml为例说明一下取得和写入的方法。

2. 写入xml的代码。

private void setUserName(String user_name){

                  XmlDocument xmlDoc = new XmlDocument();//声明读取xml的对象
                    xmlDoc.Load(XML_FILE_DIR);//获取xml文件,XML_FILE_DIR为xml文件的存放路径,我在这里定义的是常量。
                    XmlNode root = xmlDoc.SelectSingleNode("userID");
                    XmlNode xn = xmlDoc.SelectSingleNode("user");
                    XmlElement xe1 = xmlDoc.CreateElement("user");//创建一个<userID>节点
                    xe1.SetAttribute("nameSeq", (userList.Count + 1).ToString()); //给节点的nameSeq赋值
                    xe1.SetAttribute("values", cbxYhid.Text);                                //给节点的values赋值
                    root.AppendChild(xe1);//添加节点
                    xmlDoc.Save(XML_FILE_DIR);//保存

}

这样就可以忘xml中添加一个节点了,当然也可以用循环或者其他的方法一次往xml中添加一个以上的节点,然后保存,根据需求自由发挥了。

3. 读取xml文件。

private List<String> getUserName()
        {
            try
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(XML_FILE_DIR);
                XmlNode xn = xmlDoc.SelectSingleNode("userID");
                XmlNodeList xnl = xn.ChildNodes;
                foreach (XmlNode xnf in xnl)
                {
                    XmlElement xe = (XmlElement)xnf;
                    String name = xe.GetAttribute("values");
                    if (!String.IsNullOrEmpty(name))
                    {
                        userList.Add(xe.GetAttribute("values"));
                    }
                }
                return userList;
            }
            catch (Exception)
            {
                return null;
            }            
        }

代码如上,我是读出来放在了list当中的,也可以按照实际的需求自由发挥。