![](/img/trans.png)
[英]How to serialize/deserialize to `Dictionary<int,List<string>>` from custom XML
[英]How to Serialize a Dictionary<string,List<Custom Type>> to XML
我有一個自定義類:
public class DicExpense
{
[XmlElement]
public string EmployeeName { get; set; }
[XmlElement]
public string Company { get; set; }
}
我將其放入這樣的字典中:
var dict = new Dictionary<string, List<DicExpense>>();
dict.Add("Expense1",new List<DicExpense>())
dict["Expense1"].Add(new DicExpense() {EmployeeName = "Sam", Comment = "something"})
dict["Expense1"].Add(new DicExpense() {EmployeeName = "Sam", Comment = "something"})
dict.Add("Expense2",new List<DicExpense>())
dict["Expense2"].Add(new DicExpense() {EmployeeName = "John", Comment = "something"})
dict["Expense2"].Add(new DicExpense() {EmployeeName = "John", Comment = "something"})
我想將其序列化為XML:
<Expense>
<key>Expense1</key>
<EmployeeName>Sam</EmployeeName>
<Comment>something</Comment>
<EmployeeName>John</EmployeeName>
<Comment>something</Comment>
</Expense>
我在嘗試這個:
StringBuilder output = new StringBuilder();
var writer = new StringWriter(output);
XmlSerializer serializer = new XmlSerializer(typeof(Dictionary<string, List<DicExpense>>));
serializer.Serialize(writer, records);
Console.WriteLine(output);
但它不起作用。 當你有一個自定義類型集合的值時,有沒有辦法序列化它?
如果要序列化/反序列化使用Dictionary<TKey, TValue>
,請使用DataContractSerializer
:
[DataContract(Name = "Expense")]
public class DicExpense
{
[DataMember]
public string EmployeeName { get; set; }
[DataMember(Order = 0)]
public string Company { get; set; }
}
var dict = new Dictionary<string, List<DicExpense>>();
dict.Add("Expense1", new List<DicExpense>());
dict["Expense1"].AddRange(new List<DicExpense>
{
new DicExpense()
{
EmployeeName = "Sam",
Company = "company1"
},
new DicExpense()
{
EmployeeName = "John",
Company = "company1"
}
});
dict.Add("Expense2", new List<DicExpense>());
dict["Expense2"].AddRange(new List<DicExpense>
{
new DicExpense()
{
EmployeeName = "Smith",
Company = "company2"
},
new DicExpense()
{
EmployeeName = "John",
Company = "company2"
}
});
var serializer = new DataContractSerializer(typeof(Dictionary<string, List<DicExpense>>));
using (var writer = XmlWriter.Create(Console.Out))
{
serializer.WriteObject(writer, dict);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.