2011-05-09 22 views
8

que tienen la clase de seguimiento y la lista que lo sostiene:serializar clase a XML?

public class Transport 
{ 
    public string TransportType { get; set; } 
    public string Mode { get; set; } 
    public class Coordinates 
    { 
     public float ID { get; set; } 
     public float LocX { get; set; } 
     public float LocY { get; set; } 
     public float LocZ { get; set; } 
     public ObjectState State { get; set; } 
     public List<int[]> Connections = new <int[]>(); 
    } 
} 

public enum ObjectState 
{ 
    Fly, 
    Ground, 
    Water 
} 

public static List<Transport> Tracking = new List<Transport>(); 

¿Cómo serializar el Seguimiento a XML?

Sé que puedo usar [Serializable] en la lista y serializarlo en un archivo, pero no estoy seguro de cómo lo defino para guardarlo como XML.

Respuesta

19

Si sus dos clases fueron marcadas con el atributo [Serializable], a continuación, guardar cosas en un archivo debe ser tan simple como:

var serializer = new XmlSerializer(typeof(Transport)); 

using(var writer = new StreamWriter("C:\\Path\\To\\File.xml")) 
{ 
    serializer.Serialize(writer, instance); 
} 

actualización

Lo sentimos, no se dieron cuenta que eras preguntando cómo personalizar la salida. Eso es lo que los [XmlAttribute] y [XmlElement] atributos son para:

public class Transport 
{ 
    // Store TransportType as an attrribute called Type in the XML 
    [XmlAttribute("Type")] 
    public string TransportType { get; set; } 

    // Rest of Implementation 
} 
+0

Mi principal problema es el formato que da salida, ¿Cómo puede personalizar sería yo lo que quiero como atributo etc? – Guapo

+0

@Guapo usa el atributo '[XmlAttribute]' en propiedades/campos para configurar cosas para serializar como atributos que se oponen a Elements. Hay muchos otros atributos con los que puede decorar para controlar la serialización. Ver: http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributeattribute.aspx – vcsjones

+0

@vcsjones gracias, eso ayuda, tuve algunas dificultades importantes para convertir una lista en un elemento, pero ahora tengo todo solucionó. – Guapo

0

Se necesita un flujo y un objeto XmlSerializer, he aquí un ejemplo:

FileStream fs = new FileStream(@"C:\MyPath", FileMode.OpenOrCreate); 

xmlSerializer = new XmlSerializer(typeof(MyClass)); 

xmlSerializer.Serialize(fs, myClassInstance); 

fs.Flush(); 
fs.Close(); 
fs.Dispose(); 

No se olvide de controlar los errores de su propio camino. Y también supongo que quieres serializar todas las propiedades de tu clase.

Cuestiones relacionadas