如何使用DataContractSerializer反序列化XML

我正在尝试反序列化xml文档:

   TEST1 TESTGAME1 1111111  5,00    TEST2 TESTGAME2 222222  0,30 0,90    

.cs类:

 namespace XmlParse { using System.Collections.Generic; using System.Runtime.Serialization; [DataContract(Namespace = "http://serialize")] public class game { #region Public Properties [DataMember] public string name { get; set; } [DataMember] public string code { get; set; } [DataMember] public long ugn { get; set; } [DataMember] public List bets { get; set; } #endregion } [KnownType(typeof(game))] [DataContract(Namespace = "http://serialize")] public class games { #region Public Properties [DataMember] public List game { get; set; } #endregion } } 

主要:

 FileStream fs = new FileStream(Path.Combine(this.path, xmlDocumentName), FileMode.Open); XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas()); DataContractSerializer ser = new DataContractSerializer(typeof(games)); // Deserialize the data and read it from the instance. games deserializedPerson = (games)ser.ReadObject(reader, true); reader.Close(); fs.Close(); 

deserializedPerson显示count = 0

是什么赋予了?

在此处输入图像描述

我想到了。 也许有其他实现,但这有效。 对于我的生活,我找不到任何在对象内使用List的例子。 这是一个工作示例:

要解析的XML文档:

    TEST1 TESTGAME1 1111111  5,00    TEST2 TESTGAME2 222222  0,30 0,90    

.cs类:

 namespace XmlParse { using System; using System.Collections.Generic; using System.Globalization; using System.Runtime.Serialization; [DataContract(Name = "game", Namespace = "")] public class Game { [DataMember(Name = "name", Order = 0)] public string Name { get; private set; } [DataMember(Name = "code", Order = 1)] public string Code { get; private set; } [DataMember(Name = "ugn", Order = 2)] public string Ugn { get; private set; } [DataMember(Name = "bets", Order = 3)] public Bets Bets { get; private set; } } [CollectionDataContract(Name = "bets", ItemName = "bet", Namespace = "")] public class Bets : List { public List BetList { get { return ConvertAll(y => decimal.Parse(y, NumberStyles.Currency)); } } } [CollectionDataContract(Name = "games", Namespace = "")] public class Games : List { } } 

读取并解析xml文档:

 string fileName = Path.Combine(this.path, "Document.xml"); DataContractSerializer dcs = new DataContractSerializer(typeof(Games)); FileStream fs = new FileStream(fileName, FileMode.Open); XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas()); Games games = (Games)dcs.ReadObject(reader); reader.Close(); fs.Close();