2017-02-23 8 views
1

Ich hatte eine XML-Datei, die ich serialisieren musste. Ich benutzte VS Funktion Paste Special->Convert XML to C# Classes Funktion und bekam die C# -Klassen für diese XML Datei. Die C# Datei für die XML hat mehrere Klassen wie unten enter image description hereWie man ein XML Serializable macht?

Die auf dem Bild gezeigt erzeugt C# von XML hat die folgende Struktur

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://example.com/633")] 
     [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://example.com/633", IsNullable = false) ] 

     public partial class FlightPlan 
     { 

      private FlightPlanM633Header m633HeaderField; 

      private FlightPlanM633SupplementaryHeader m633SupplementaryHeaderField; 
------ 
----- 
} 

ich das [serializable] Attribut hinzufügen möchten, und gehen Sie voran mit der Serialisierung des gesamten XML. Ich kann das Attribut [serializable] nicht hinzufügen. Kann jemand helfen ?

Dank

+1

Das Attribut Eigenschaft nicht auf eine Klasse gehen können, ist es vor jeder Eigenschaft in der Klasse sein müssen und auf einem primitiven wie int sein muss, string, double ... – jdweng

+0

Wie ändere ich mein XML? Alles wird von Visual Studio generiert. Es muss analysiert werden – Apoorv

+0

"Ich hatte eine XML-Datei, die ich serialisieren musste" - eine XML-Datei wäre das * Ergebnis * der Serialisierung. Wie Ihre andere Frage ist dies IMO unklar. –

Antwort

1

Die Inhalte einfügen> Einfügen von XML als Klassen Befehl fügt bereits die SerializableAttribute die Klassen es so keine Notwendigkeit, schafft sie sich hinzuzufügen. Sie sollten in der Lage sein, sofort Serialisierung:

using System; 
using System.Xml.Serialization; 

namespace ConsoleApp1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var serializer = new XmlSerializer(typeof(FlightPlan)); 

      // Deserialize 
      FlightPlan o = (FlightPlan) 
       serializer.Deserialize(new StreamReader("source.xml")); 

      // Serialize 
      serializer.Serialize(new StreamWriter("Out.xml"), o); 
     } 
    } 
} 
+0

Was ist, wenn ich mehrere Klassen im selben XML habe? Der obige Code ist nur für eine Klassendatei mit dem Namen FlightPlan – Apoorv

+0

Diese Antwort ist schwer zu beantworten, ohne mehr Code zu sehen, der generiert wurde, oder den XML-Code, aus dem Sie die Klassen generiert haben. Wenn Sie Eigenschaften für das 'FlightPlan'-Objekt festlegen, sollten diese ebenfalls serialisiert werden. –

+0

Lassen Sie mich auch den C# -Code für XML für die nächste Klasse aktualisieren! – Apoorv