Wie wird ListT serialisiert?

8

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 ...

brauche

Was sind einige gute Möglichkeiten, dies zu tun? Danke

    
Ocean 15.02.2011, 15:50
quelle

6 Antworten

9

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

%Vor%

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.

    
BrokenGlass 15.02.2011, 16:04
quelle
0

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.

    
cloudraven 22.03.2013 22:38
quelle
0

Sie können dies verwenden

%Vor%     
ibrahim_ragab 22.03.2013 21:44
quelle
0

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

    
Ricardo Appleton 13.05.2016 16:13
quelle
0
%Vor%     
Amir Twito 19.01.2017 10:20
quelle
-1

JAXB ist das Beste, was ich je benutzt habe.

Ссылка

Aus XML:

%Vor%

Nach XML:

%Vor%     
George Mavchun 15.02.2011 15:59
quelle

Tags und Links