Сохранение сущности в XML с использованием MVVM для чтения / записи в приложении WPF - PullRequest
0 голосов
/ 03 апреля 2010

Допустим, у меня есть класс (модель) под названием 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; }
    }
}

Я ищу пример кода для чтения / записи этой модели в XML (предпочтительноlinq2XML) => хранение 1: n экземпляров в XML.я могу сам управлять видом и частью ViewModel, хотя было бы неплохо, если бы у кого-то тоже был образец этой части ...

Ответы [ 2 ]

3 голосов
/ 03 апреля 2010

Что ж, вы могли бы использовать Linq to 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>;
}
0 голосов
/ 03 апреля 2010

Не уверен, как вы хотите, чтобы ваш 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)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...