Good day! I am trying to deserialize an XML document, but for some reason it turns out to select only the first element from XML.
class Program { static void Main(string[] args) { XmlSerializer formatter = new XmlSerializer(typeof(XmlClass)); using (FileStream fs = new FileStream(@"F:\XML1.xml", FileMode.Open)) { XmlClass newPerson = (XmlClass)formatter.Deserialize(fs); Console.WriteLine("Объект десериализован"); foreach (var o in newPerson.Info.Man) { Console.WriteLine("Значение: {0} ", o.info); Console.ReadKey(); } } } } Here is the class in which I pass the elements:
[Serializable] [XmlRoot(ElementName = ("Document"))] public class XmlClass { [XmlElement(ElementName = "Personal")] public InfoClass Info { get; set; } } public class InfoClass { [XmlElement(ElementName = "Work")] public List<ManClass> Man { get; set; } } public class ManClass { [XmlAttribute(AttributeName = "info")] public string info { get; set; } } Sample XML document:
<?xml version="1.0" encoding="utf-8" ?> <Document> <Personal> <Work info="Работающий"> <users info="1"> <user name="Bill Gates"> <company>Microsoft</company> <age>48</age> </user info="2"> <user name="Larry Page"> <company>Google</company> <age>42</age> </user> </users> </Work> </Personal> </Document>
<Главный элемент>. - VladD September