管理xml文件中的数据库

时间:2014-10-10 23:51:23

标签: c# xml database collections

我想在某种DB中保存一些细节。 我认为使用像访问或mysql这样的数据库会有点矫枉过正 因此,我一直计划使用XML文件作为数据库 我的想法是以某种结构创建一个xml文件,例如:

<DB>
<Player>John</Player>
<Money>50</Money>
<Player>James</Player>
<Money>10</Money>
</DB>

然后,将此数据加载到某种集合中,在那里进行管理并覆盖xml文件。

有没有更好的方法来实现我想要做的事情?我认为我太复杂了。

编辑: 我添加了一种序列化数据并保存数据的方法:

public static DB LoadFromFile(string path)
{
    FileStream fs = null;
    DB db = null;

    try
    {
        fs = File.Open(path, FileMode.Open);
        var serializer = new XmlSerializer(typeof(DB));
        db = (DB)serializer.Deserialize(fs);
    }
    catch
    {

    }

    if (fs != null)
    {
        fs.Close();
    }

    return db;
}

public static void SaveToFile(string path, object objData)
{
    var fs = File.Open(path, FileMode.Create);
    var serializer = new XmlSerializer(objData.GetType());

    try
    {
        serializer.Serialize(fs, objData);
    }
    catch
    {

    }

    fs.Close();
}

当我在调用SaveToFile后尝试使用LoadFromFile时,我得到了: + InnerException {&#34;出乎意料。&#34;} System.Exception {System.InvalidOperationException}

1 个答案:

答案 0 :(得分:2)

你应该像这样使用XmlSerializer

public class User
{
    public string Player { get; set; }
    public string Money{ get; set; }
}
public class Database
{
    public List<User> User { get; set; }
    public static Database LoadFromFile(string path)
    {
        var fs = File.Open(path);
        var serializer = new XmlSerializer(typeof(DataBase));
        var db = (Database)serializer.Deserialize(fs);
        return db;
    }
}

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(v=vs.110).aspx