2010-04-03 18 views
0

說我一個類(模型)稱爲實例與屬性DatbaseHostname,AccessManagerHostname,DatabaseUsername和DatabasePassword存儲在XML中的實體,使用MVVM閱讀WPF應用程序/寫

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)=>在XML中存儲1:n個實例。 我可以管理視圖和視圖模型分手嘍,雖然這將是很好,如果有人有這樣的一部分太樣本..

回答

3

好了,你可以使用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>; 
} 
+0

好主意,謝謝! – 2010-04-03 17:44:09

0

不知道你怎麼想你的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))); 
相關問題