Benutzer mit den meisten Antworten
Dictionaries serialisieren / deserialisieren

Frage
-
Hi,
ich muss relativ viele XML Dateien einlesen, deserialisieren und serialisieren.
Dabei muss ich evtl. zukünftig Dictionaries serialisieren.
Den Unterschied, den ich sehe, ist dass die Datei mit DataContractSerializer anders erzeugt wird.Wo liegt da der Unterschied? Wann sollte man wann was verwenden bzw. wie mit evtl. einem Dictionary//using (FileStream writer = new FileStream(CFPG.PathToXMLServerAddresses + ".read1.xml", FileMode.Create)) //{ // DataContractSerializer ser = new DataContractSerializer(typeof(SERVERADDRESSES)); // ser.WriteObject(writer, CFServerAddressesF); //} using (FileStream writer = new FileStream(CFPG.PathToXMLServerAddresses + ".current.xml", FileMode.Create)) { XmlSerializer ser = new XmlSerializer(typeof(SERVERADDRESSES)); ser.Serialize(writer, CFServerAddressesF); }
Gruß, Markus
- Bearbeitet Markus Freitag Freitag, 1. Dezember 2017 16:39
Antworten
-
Hallo Markus,
ich hab einige Beiträge im Forum dazu geschrieben. Bspw. in diesen Threads:
C# - XML - Datei - Elemente lesen, schreiben, ändern, erweitern
XmlReader.GetAttribute() liest keinen Wert!!!
...
Du kannst die Serialisierung über mehrere Wege steuern. Attribute bei den Klassen und Eigenschaften, Einstellungen der Serialisierer, Nachbearbeitung oder Einsetzen eigener Serialisierungsmethoden, usw.
Das Thema ist aber zu umfangreich, um dir das alles aufzuzeigen. Da wirst Du dich selbst einarbeiten müssen.
Ein Tipp evtl. noch: Bei komplexen XML Strukturen kann man mit einer XSD oder notfalls auch einer XML Datei über ein VS Hilfsprogramm entsprechend passende Datenklassen erzeugen lassen.
XML Schema Definition-Tool (Xsd.exe)
(Der umgekehrte Weg geht auch)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Freitag, 1. Dezember 2017 17:30
- Als Antwort markiert Markus Freitag Samstag, 2. Dezember 2017 12:06
Alle Antworten
-
Hallo Markus,
ich persönlich verwende eigentlich bei eigenen Serialisierungen gar keine Dictionaries, sondern meist List<T> mit eigenen Klassen.
Wo die Unterschiede liegen, müsstest Du doch sehen. Wenn Du etwas spezielles wissen willst, musst Du uns schon verraten, welche Unterschiede Du genau meinst.
Beide Serialisierer haben vielfältige Einstellungsmöglichkeiten. Spiel mal mit denen rum, eigentlich sollte da nicht allzuviel Unterschied bei den Ergebnissen rauskommen, wenn die Einstellungen gleich sind.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Wo die Unterschiede liegen, müsstest Du doch sehen. Wenn Du etwas spezielles wissen willst, musst
Hi Stefan,
nein, nichts spezielles, fange ja gerade mal an. Evtl. hast ein prägnantes Beispiel, um es aufzuzeigen, gerne auch über List<T>, wie Du es offensichtlich machst.
Gruß, Markus
-
Hallo Markus,
ich hab einige Beiträge im Forum dazu geschrieben. Bspw. in diesen Threads:
C# - XML - Datei - Elemente lesen, schreiben, ändern, erweitern
XmlReader.GetAttribute() liest keinen Wert!!!
...
Du kannst die Serialisierung über mehrere Wege steuern. Attribute bei den Klassen und Eigenschaften, Einstellungen der Serialisierer, Nachbearbeitung oder Einsetzen eigener Serialisierungsmethoden, usw.
Das Thema ist aber zu umfangreich, um dir das alles aufzuzeigen. Da wirst Du dich selbst einarbeiten müssen.
Ein Tipp evtl. noch: Bei komplexen XML Strukturen kann man mit einer XSD oder notfalls auch einer XML Datei über ein VS Hilfsprogramm entsprechend passende Datenklassen erzeugen lassen.
XML Schema Definition-Tool (Xsd.exe)
(Der umgekehrte Weg geht auch)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Freitag, 1. Dezember 2017 17:30
- Als Antwort markiert Markus Freitag Samstag, 2. Dezember 2017 12:06