Ich habe Klasse A. Klasse B und Klasse C sind Teil der Klasse A.
%Vor%Ich möchte Klasse A serialisieren und XML damit erzeugen; Ich möchte auch list1 und list2 und auch die Enum serialisieren ...
Was ist ein guter Ansatz zum Serialisieren dieses XML, weil ich die Funktionalität der Umwandlung eines Objekts in XML und XML in ein Objekt ...
braucheWas sind einige gute Möglichkeiten, dies zu tun? Danke
Sie können den XMLSerializer verwenden:
%Vor%Damit dies ordnungsgemäß funktioniert, benötigen Sie außerdem XML-Anmerkungen für Ihre Typen, um sicherzustellen, dass sie mit der richtigen Benennung serialisiert werden, d. h .:
%Vor%Bearbeiten:
Enum
-Eigenschaften werden standardmäßig serialisiert, wobei der Name der Eigenschaft das XML-Element und dessen Enum-Wert als XML-Wert enthält, dh wenn die Eigenschaft NotSystem
in Ihrem Beispiel den Wert C
hat, würde sie als serialisiert werden
Natürlich können Sie die Art und Weise, wie die Eigenschaft serialisiert wird, ändern, indem Sie eine richtige Annotation verwenden, also [XmlAttribute]
, so dass sie als Attribut serialisiert wird, oder [XmlElement("Foobar")]
, so dass sie mit Foobar
als Elementname serialisiert wird. Ausführlichere Dokumentation ist auf MSDN verfügbar, überprüfen Sie den obigen Link.
Müssen Sie XML als Repräsentation verwenden? Sie sollten auch binäre Darstellungen in Betracht ziehen, die normalerweise schneller und kompakter sind. Sie haben die BinaryFormatter , die eingebaut wird, oder Noch besser können Sie Protokollpuffer verwenden, die blitzschnell und extrem kompakt sind. Wenn Sie XML benötigen, sollten Sie überlegen, ob Sie eine gewisse Interoperabilität mit anderen Sprachen und Technologien oder sogar Plattformen unterstützen möchten. Wenn es nur C # zu c # ist, ist sowohl der XmlSerializer für Xml als auch der BinaryFormatter sind in Ordnung. Wenn Sie mit Javascript interagieren, können Sie JSON verwenden (Sie können JSON.NET ausprobieren). Wenn Sie Windows Phone oder andere eingeschränkte Geräte unterstützen möchten, ist es möglicherweise einfacher, den XmlSerializer zu verwenden, der überall funktioniert.
Schließlich möchten Sie möglicherweise nur eine gemeinsame Infrastruktur haben und viele Serialisierungsmechanismen und -transporte unterstützen. Microsoft bietet eine wunderbare (wenn auch etwas langsame) Lösung in WCF . Wenn Sie mehr über die Anforderungen Ihres Systems sagen, ist es vielleicht einfacher, eine Implementierung vorzuschlagen. Das Gute ist, dass Sie viele Möglichkeiten haben.
Wie vorgeschlagen, könnten Sie Binärdarstellungen verwenden. Bei der Suche nach Lösungen stieß ich auf diesen Link . Grundsätzlich markieren Sie Ihre A-Klasse als [Serializable] und das Gleiche gilt für Ihre B- und C-Klassen. Dann könnten Sie Funktionen wie diese zum Serialisieren und Deserialisieren verwenden
Tags und Links c# xml serialization list