2010-12-02 13 views
5

Ich bin ziemlich neu in XML in .net. Als Teil meiner Aufgabe muss ich die Klasse erstellen, die in XML serialisiert werden kann. Ich habe eine Beispiel-XML-Datei mit allen Tags (die Klasse sollte XML ähnlich der XML-Beispieldatei erzeugen). Was wäre der beste Ansatz, um die Klasse aus einer XML-Datei zu erstellen?Wie erstellen Sie eine serialisierbare C# -Klasse aus XML-Datei

Vielen Dank im Voraus!

+0

Hatten Sie Glück mit einem der vorgeschlagenen Ansätze? –

+0

Ja !. Ich habe erfolgreich das xsd-Tool verwendet, um die Klasse zu generieren (ich musste einige Änderungen vornehmen, um meine Anforderungen zu erfüllen). – Grasshopper

+0

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx – Mou

Antwort

10

Sie können XSD.exe verwenden, um eine CS-Datei aus XML zu erstellen. http://msdn.microsoft.com/en-us/library/x6c1kb0s%28VS.71%29.aspx

an der Eingabezeile:

xsd myFile.xml 
xsd myFile.xsd 

Die erste Zeile wird eine Schemadefinitionsdatei (XSD) erzeugen, sollte die zweite Datei eine CS-Datei erzeugen. Ich bin mir nicht sicher, ob die Syntax genau ist, aber es sollte Ihnen den Anfang machen.

+2

47 Sekunden zu schnell für mich. +1. Kann ich hinzufügen, dass '/ c' das richtige Ausgabeformat wäre? –

+0

+1 für den schnellsten Ansatz :) –

-1

Hier ist ein gutes Beispiel, wie man ein Objekt serialisiert/deserialisiert. http://sharpertutorials.com/serialization/

+1

@Grasshopper fragt nach Klassengenerierung, nicht Serialisierung. Dies geht nicht auf die Frage ein. –

+0

Ich denke, Sie könnten sich da irren - "erstellen Sie die Klasse, die in XML serialisiert werden kann". Die tatsächliche Anforderung ist ein wenig vage. –

+0

Meine Schuld, schrieb ich die Antwort um 3 Uhr morgens, bevor Sie zu Bett gehen :) – Davita

4

Rückwärts arbeiten könnte helfen - erst Ihre Klasse erstellen, dann serialisieren und sehen, was Sie bekommen.

Für die einfachsten Klassen ist es eigentlich ziemlich einfach. Sie können XmlSerializer verwenden serialisiert werden, wie: ": \ temp \ class.xml c"

 
namespace ConsoleApplication1 
{ 
    public class MyClass 
    { 
     public string SomeProperty 
     { 
      get; 
      set; 
     } 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(MyClass)); 
      TextWriter writer = new StreamWriter(@"c:\temp\class.xml"); 

      MyClass firstInstance = new MyClass(); 
      firstInstance.SomeProperty = "foo"; // etc 

      serializer.Serialize(writer, firstInstance); 
      writer.Close(); 

      FileStream reader = new FileStream(@"c:\temp\class.xml", FileMode.Open); 

      MyClass secondInstance = (MyClass)serializer.Deserialize(reader); 

      reader.Close(); 
     } 
    } 
} 

eine serialisierte Darstellung Ihrer Klasse in XML zu diesem schreibt. Du könntest einen Blick darauf werfen und sehen, was du bekommst. Umgekehrt können Sie serializer.Deserialize verwenden, um die Klasse aus "c: \ temp \ class.xml" zu instanziieren.

Sie können das Verhalten der Serialisierung ändern und mit unerwarteten Knoten usw. umgehen - sehen Sie sich zum Beispiel the XmlSerializer MSDN page an.

Verwandte Themen