C# 读写XML文件封装, 直接按类来保存和读取

来源:互联网 发布:随机森林算法优化研究 编辑:程序博客网 时间:2024/06/05 16:04
using System;
using System.IO;
using System.Xml.Serialization;
using System.Collections.Generic;


using LogLib; // 如果没有加载该库,请删除所有logger


// add your data to here
public class ClientUserDefaultData
{
public LoginDefaultData loginData = new LoginDefaultData();
}


public class XMLUserDataDefaultMgr
{
private static bool canTryAgain = true;
private static string mFileName = null;
private static ClientUserDefaultData mUserDefaultData = new ClientUserDefaultData();


public static ClientUserDefaultData UserDefaultData
{
get { return mUserDefaultData; }
}


public static void InitWithFileName(string fileName)
{
if(fileName == null) return;


mFileName = fileName;// @"d:\SerializationOverview.xml"
Logger.Info("XMLUserDataDefaultMgr.....mFileName={0}", mFileName);
}


/* you must execute this function earier than ReadFromXML, 
* executing first time after create role success, 
* then you can execute each one making yourself */
public static void WriteToXML()
{
if(mFileName == null) return;
StreamWriter file = null;
try
{
file = new StreamWriter(mFileName);
Logger.Info("WriteToXML.....file open normal");


if(file == null) return;
XmlSerializer writer = new XmlSerializer(typeof(ClientUserDefaultData));

if(writer == null)
{
file.Close();
return;
}


writer.Serialize(file, mUserDefaultData);
Logger.Info("WriteToXML.....Serialize ok");
}
catch(IOException)
{
Logger.Info("WriteToXML.....cann't open needed file");
}
finally
{
if(file != null) file.Close();
Logger.Info("WriteToXML.....in finally");
}


file.Close();
}

public static void ReadFromXML()
{
if(mFileName == null) return;


StreamReader file = null;
XmlSerializer reader = null;
retry:
try
{
canTryAgain = false;


// open file
file = new StreamReader(mFileName);
Logger.Info("ReadFromXML.....file open normal");


// get de-serialize data format
if(file == null) return;
reader = new XmlSerializer(typeof(ClientUserDefaultData));


// do de-serialize
if(reader == null)
{
file.Close();
return;
}


mUserDefaultData = (ClientUserDefaultData)reader.Deserialize(file);
Logger.Info("ReadFromXML.....de-serialize ok");
}
catch (FileNotFoundException)
{
Logger.Info("ReadFromXML.....file not found");
WriteToXML();
if(canTryAgain)
goto retry;
}
catch(IOException)
{
Logger.Info("ReadFromXML.....cann't open needed file");
}
catch (InvalidOperationException)
{
Logger.Info("ReadFromXML.....deserialize error, may be is file not match");
}
finally
{
if(file != null) file.Close();
Logger.Info("ReadFromXML.....in finally");
}

file.Close();
}
}


// for save login information of user
public class LoginDefaultData
{
public bool bCheckBoxState = false;// default is false
public string strUserName = null;// default no
}

0 0
原创粉丝点击