最近在用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当中的,也可以按照实际的需求自由发挥。