serializar objeto deserialize deserializar clase c# xml-deserialization

objeto - xml to class c#



Cómo deserializar xml al objeto (2)

Los comentarios de arriba son correctos. Te estás perdiendo los decoradores. Si quieres un deserializador genérico, puedes usar esto.

public static T DeserializeXMLFileToObject<T>(string XmlFilename) { T returnObject = default(T); if (string.IsNullOrEmpty(XmlFilename)) return default(T); try { StreamReader xmlStream = new StreamReader(XmlFilename); XmlSerializer serializer = new XmlSerializer(typeof(T)); returnObject = (T)serializer.Deserialize(xmlStream); } catch (Exception ex) { ExceptionLogger.WriteExceptionToConsole(ex, DateTime.Now); } return returnObject; }

Entonces lo llamarías así:

MyObjType MyObj = DeserializeXMLFileToObject<MyObjType>(FilePath);

Esta pregunta ya tiene una respuesta aquí:

<StepList> <Step> <Name>Name1</Name> <Desc>Desc1</Desc> </Step> <Step> <Name>Name2</Name> <Desc>Desc2</Desc> </Step> </StepList>

Tengo este XML, ¿cómo debo modelar la clase para que pueda deserializarlo utilizando el objeto XmlSerializer ?


Tus clases deberían gustarles así

[XmlRoot("StepList")] public class StepList { [XmlElement("Step")] public List<Step> Steps { get; set; } } public class Step { [XmlElement("Name")] public string Name { get; set; } [XmlElement("Desc")] public string Desc { get; set; } }

Aquí está mi código de prueba.

string testData = @"<StepList> <Step> <Name>Name1</Name> <Desc>Desc1</Desc> </Step> <Step> <Name>Name2</Name> <Desc>Desc2</Desc> </Step> </StepList>"; XmlSerializer serializer = new XmlSerializer(typeof(StepList)); using (TextReader reader = new StringReader(testData)) { StepList result = (StepList) serializer.Deserialize(reader); }

Si desea leer un archivo de texto, debe cargar el archivo en FileStream y deserializarlo.

using (FileStream fileStream = new FileStream("<PathToYourFile>",FileMode.Open)) { StepList result = (StepList) serializer.Deserialize(fileStream ); }