2011-12-06 110 views
-4

我有這樣的代碼:C#將數據添加到陣列

public static Account[] LoadXml(string fileName) { 
    Account ths = new Account(); 
    // load xml data 
    // put data into properties/variables 
    // the xml is in a structure like this: 
    /* 
    <accounts> 
     <account ID="test account"> 
     <!-- account variables here --> 
     </account> 
     <account ID="another test account"> 
     <!-- account variables here --> 
     </account> 
    </accounts> 
    */ 
} 

我怎麼會返回在他們的賬戶數組或集合?

每個<account ID="test"></account>是它自己的Account

+0

如果你的'Account'類實際上匹配XML文檔,你可以嘗試反序列化它。否則使用'XmlReader'或'XDocument'。 – Yuck

+0

我已經完成了Xml讀取,我只需要讓函數返回每個帳戶。 – tr0yspradling

回答

6

考慮使用適當的XML序列化,而不是寫你自己的。 .NET框架確實爲您處理所有問題,包括數組,列表或集合。

你的代碼應該是如此簡單:

using (var stream = File.OpenRead(filename)) { 
    var serializer = new XmlSerializer(typeof(AccountsDocument)); 
    var doc = (AccountsDocument)serializer.Deserialize(stream); 
    return doc.Accounts; 
} 

的AccountsDocument類:

[XmlRoot("accounts")] 
public class AccountsDocument { 
    [XmlElement("account")] 
    public Account[] Accounts { get; set; } 
} 

Account類:

public class Account { 
    [XmlAttribute("ID")] 
    public string Id { get; set; } 

    [XmlElement("stuff")] 
    public StuffType Stuff { get; set; } 

    // ... and so on 
} 
+0

我測試了這一點,它的工作完美無瑕。謝謝! – tr0yspradling

1

你可以做名單:

var result = new List<Account> 

然後將項目添加到列表:

result.Add(account); 

,並最終返回它:

return result.ToArray(); 
+2

我不需要XML的幫助..我只需要幫助集合。 – tr0yspradling