简体   繁体   English

以XML存储实体,使用MVVM在WPF应用程序中进行读写

[英]Storing entity in XML, using MVVM to read/write in WPF Application

Say I've a class (model) called Instance with Properties DatbaseHostname, AccessManagerHostname, DatabaseUsername and DatabasePassword 说我有一个名为Instance的类(模型),其属性为DatbaseHostname,AccessManagerHostname,DatabaseUsername和DatabasePassword

public class Instance
{
    private string _DatabaseHostname;

    public string DatabaseHostname
    {
        get { return _DatabaseHostname; }
        set { _DatabaseHostname = value; }
    }
    private string _AccessManagerHostname;

    public string AccessManagerHostname
    {
        get { return _AccessManagerHostname; }
        set { _AccessManagerHostname = value; }
    }
    private string _DatabaseUsername;

    public string DatabaseUsername
    {
        get { return _DatabaseUsername; }
        set { _DatabaseUsername = value; }
    }

    private string _DatabasePassword;

    public string DatabasePassword
    {
        get { return _DatabasePassword; }
        set { _DatabasePassword = value; }
    }
}

I'm looking for a sample code to read/write this Model to XML (preferably linq2XML) => storing 1:n instances in XML. 我正在寻找一个示例代码以将该模型读/写为XML(最好是linq2XML)=>在XML中存储1:n实例。 i can manage the the view and ViewModel part myself, although it would be nice if someone had a sample of that part too.. 我可以自己管理view和ViewModel部分,但是如果有人也有该部分的示例,那将很好。

Well, you could use Linq to XML, but your class is a perfect candidate for XML Serialization, which is much simpler IMHO : 好的,您可以使用Linq到XML,但是您的类是XML序列化的理想选择,恕我直言:

var list = new List<Instance>();
...

// Serialization

var xs = new XmlSerializer(typeof(List<Instance>));
using (var writer = XmlWriter.Create(filename))
{
    xs.Serialize(writer, list);
}

...

// Deserialization

using (var reader = XmlReader.Create(filename))
{
    list = xs.Deserialize(reader) as List<Instance>;
}

Not sure how you want your xml structured, but this should work: 不确定您想如何构造xml,但这应该可以工作:

    List<Instance> instances = new List<Instance>();
    // Get your instances here...

    var baseNode = new XElement("Instances");

    instances.ForEach(instance => baseNode.Add("Instance",
        new XAttribute("DatabaseHostname", instance.DatabaseHostname),
        new XAttribute("AccessManagerHostname", instance.AccessManagerHostname),
        new XAttribute("DatabaseUsername", instance.DatabaseUsername),
        new XAttribute("DatabasePassword", instance.DatabasePassword)));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM