Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 45
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

3 arten der Serialisierung bzw Deserialisierung


Autor: Felix Knorr
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 4880
  
Kick it on dotnet-kicks.de  

Beschreibung:

Man versteht darunter eine Abbildung von Objekten auf eine externe sequenzielle Darstellungsform. Serialisierung kann für das Erreichen von Persistenz für ein Objekt verwendet werden, aber auch in verteilten Softwaresystemen spielt Serialisierung eine bedeutende Rolle.[Quelle Wikipedia]

Es gibt unter C# 3 Arten der Serialisierung:
* BinaryFormatter (Objekte werden binär abgespeichert)
* SoapFormatter (Objekte können gelesen werden)
* XMLSerializer (Objekte werden in eine XML Datei gespeichert)


Abgelegt unter: Serialisierung, soap, formatter, xml, binary, Deserialisierung.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
using System.Xml.Serialization;



       private ArrayList arrList = new ArrayList();   
     
//....(ArrayList füllen .....)

        /*****************
         * XmlSerializer *
         *****************/
        private void serializeXml() {
            using (FileStream fs = new FileStream("Personen.xml", FileMode.Create)) {
                XmlSerializer xmlSer = new XmlSerializer(typeof(ArrayList), new Type[] { typeof(Person) });
                xmlSer.Serialize(fs, arrList);
            }
        }

        private void deserializeXml() {
            try {
                using (FileStream fs = new FileStream("Personen.xml", FileMode.Open)) {
                    XmlSerializer xmlSer = new XmlSerializer(typeof(ArrayList), new Type[] { typeof(Person) });
                    arrList = (ArrayList)xmlSer.Deserialize(fs);
                }
            } catch (IOException ex) {
                MessageBox.Show(ex.Message);
            }

            lstAusgabe.Items.Clear();
            foreach (Person p in arrList)
                lstAusgabe.Items.Add(p);
        }

        /******************
         * Soap Formatter *
         ******************/
        private void serializeSoap() {
            using (FileStream fs = new FileStream(@"./soap.dat", FileMode.Create)) {
                SoapFormatter soaFormatter = new SoapFormatter();
                soaFormatter.Serialize(fs, arrList);
            }
        }

        private void deserializeSoap() {
            try {
                using (FileStream fs = new FileStream(@"./soap.dat", FileMode.Open)) {
                    SoapFormatter soaFormatter = new SoapFormatter();
                    arrList = (ArrayList)soaFormatter.Deserialize(fs);
                }
            } catch (IOException ex) {
                MessageBox.Show(ex.Message);
            }

            lstAusgabe.Items.Clear();
            foreach (Person p in arrList)
                lstAusgabe.Items.Add(p);
        }

        /********************
         * Binary Formatter *
         ********************/
        private void serializeBinary() {
            using (FileStream fs = new FileStream(@"./binary.dat", FileMode.Create)) {
                BinaryFormatter binFormatter = new BinaryFormatter();
                binFormatter.Serialize(fs, arrList);
            }
        }

        private void deserializeBinary() {
            try {
                using (FileStream fs = new FileStream(@"./binary.dat", FileMode.Open)) {
                    BinaryFormatter binFormatter = new BinaryFormatter();
                    arrList = (ArrayList)binFormatter.Deserialize(fs);
                }
            } catch (IOException ex) {
                MessageBox.Show(ex.Message);
            }

            lstAusgabe.Items.Clear();
            foreach (Person p in arrList)
                lstAusgabe.Items.Add(p);
        }

//Die zu serialisierende Klasse
//(Die XML-Attribute werden nur für die Xml-serialisierung gebraucht)    
    [Serializable()]
    public class Person {
        [XmlElement("Vorname",DataType="string")]
        private string vorname;
        [XmlElement("Nachname", DataType = "string")]
        private string name;
        [XmlElement("Alter", DataType = "int")]
        private int alter;
        [XmlAttribute("Land", DataType = "string")]
        private string land;

        public Person() { }

        public string Vorname {
            get { return vorname; }
            set { vorname = value; }
        }

        public string Name {
            get { return name; }
            set { name = value; }
        }

        public int Alter {
            get { return alter; }
            set { alter = value; }
        }

        public string Land {
            get { return land; }
            set { land = value; }
        }

        public override String ToString() {
            return vorname + "\t" + name + "\t" + alter + "\t" + land;
        }
    }
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Mr. Bart Simpson schrieb am:  23.06.2010 17:12:09

Nicht ganz ignorieren sollte man den DataContractSerializer- der lässt sich IMHO nämlich am besten steuern.
Felix Knorr schrieb am:  30.06.2010 15:08:51

danke für den tipp, von dem habe ich bis jetzt noch nicht gehört, werde ihn mir aber gleich anschauen


Diese Snippets könnten für Sie interessant sein:
[C#] Generische XML-Serialisierung
[C#] Type Color serialisieren und deserialisieren
[C#] Generische, verschlüsselte Serialisierung und Deserialisieru
[C#] Serializable TimeSpan
[C#] Object to Base64 string
[C#] Serialisiert Typ in ein komprimiertes bytearray
[C#] generische De-/ Serialisierung von Objekten in XML und Binär
[C#] Typen mit dem XmlSerializer (de-)serialisieren
[C#] Java WebService aus einem WinForms-Client aufrufen
[C#] Objekt in XML speichern (Serialisieren)
[C#] Treeview in XML schreiben
[ASP.net] XML - HTML Transformation
[C#] XML Encoding eines XmlDocument ändern
[C#] XMLDocument in XDocument konvertieren
[C#] Rss Feed in XMLDocument laden
[VB.NET] XML Datei in DataSet einlesen
[VB.NET] Objekt mit dem XmlSerializer serialisieren
[VB.NET] XML Datei mit dem XmlSerializer deserialisieren
[C#] Image zu Base64 konvertieren und zurück
[C#] CSV und XML-Datei Datenbank-Import (incl. valid-check)
[C#] Währungskurse in Datenbank speichern
[VB.NET] Einfaches Erstellen einer XML Datei in .Net
[C#] XML in DataTable laden
[C#] Intellisense Unterstützung für XML Dateien für LINQ
[C#] user.config und generische Listen
[C#] Dataset verschlüsseln
[C#] Xml Datei entschlüsseln
[ASP.net] XML Daten über einen Internet Proxy abfragen
[C#] XML-Programmkonfiguration / -Steuerung
[C#] Formatieren von Sonderzeichen für XML
[C#] Binärdatei in XML File speichern
[C#] Binärdatei aus XML Datei auslesen und abspeichern
[C#] leere Knoten aus XML Document entfernen
[C#] XML Kommentare entfernen
[C#] Austauch von kritischen Zeichen in einem String...
[C#] Excel-Export ohne Excel (auch für Web)
[C#] Ini-Datei-Klasse
[C#] TreeView Export To Xml OR Import from XMl
[C#] Autom. Laden & Speichern von Position und Größe eines Forms
[VB.NET] Bild als XML Datei Speichern
[C#] Ein Object serialisieren
[C#] Ein Object deserialisieren
[C#] Konvertiert Code nach Example für XML-Kommentar
[C#] XMLIO - einfachstes (De)serialisieren von/zu XML-Dateien
[C#] Generisch XML De-/ Serialisieren
[C#] XML generieren mit Linq to XML
[C#] Spracherkennung
[C#] Wunderground Wettervorhersage
[C#] Mit LINQtoXML XML Dateien erzeugen bzw. abfragen
[C#] ini Datei anlegen - mit Dictionary
[C#] Generisches, komprimiertes, serialisieren von Objekten
[C#] Generisches, komprimiertes, deserialisieren von Objekten
[C#] Dezimal in Binär umwandeln
[C#] Binärvergleich zweier Dateien
[VB.NET] Binäre Exponentation
[VB.NET] Größter gemeinsamer Teiler (2)

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.