Einfache XML-Serialisierung in C#
Heute möchte ich euch zeigen, wie man eine XML-Serialisierung in C# durchführen kann. Serialisierung selbst, bedeutet, dass man ein Objekt in eine andere, transportable Form umwandelt. Mittels XML-Serialisierung ist es uns zum Beispiel nötig, ein Objekt einer Klasse in Form einer XML-Datei abzuspeichern und auch wieder herzustellen.
Das kann Sinn machen, wenn man ein Objekt in seinem Zustand nach dem Schließen und erneuten Öffnen einer Anwendung wiederherstellen oder wenn man ein Objekt beispielsweise per HTTP übertragen möchte.
Für unser Beispiel habe ich folgende Klasse Blog erstellt:
public class Blog
{
public string User { get; set; }
public string Pass { get; set; }
public string Subdomain { get; set; }
public string BaseUrl { get; set; }
}
Die Methode zum Serialisieren sieht wie folgt aus:
public void SerializeBlogToXML(Blog blogObj)
{
//Erstelle einen XML-Serialisierer für Objekte vom Typ Blog
XmlSerializer serializer = new XmlSerializer(typeof(Blog));
//Erstelle einen FileStream auf die Datei, in die unserer
//Blog-Objekt in XML-Form gespeichert werden soll.
FileStream file = new FileStream(Application.StartupPath
+ "\\blog.xml",
FileMode.Create);
//Serialisiere das übergebene Blog-Objekt (blogObj)
//und schreibe es in den FileStream.
serializer.Serialize(file, blogObj);
//Schließe die XML-Datei.
file.Close();
}
Nicht vergessen die passenden Using-Anweisungen zu schreiben!
using System.Xml.Serialization; using System.IO;
Ohne diese würde die oben geschriebene Methode SerializeBlogToXML nicht ohne weitere Anpassungen laufen.
Das war es auch schon. Wenn man von meinen Kommentaren absieht, dann reichen ganze 4 Zeilen aus, um ein Objekt als XML-Datei abzuspeichern.
Ein kleines Beispiel zur Verwendung könnte zum Beispiel so aussehen:
private void buttonSerialisieren_Click(object sender, EventArgs e)
{
//Blog-Objekt erstellen und mit Werten befüllen
Blog blogObject = new Blog();
blogObject.User = "maxmustermann";
blogObject.Pass = "superpasswort";
blogObject.Url = "www.code-bude.net";
//Blog-Objekt serialisieren
SerializeBlogToXML(blogObject);
}
Wenn alles geklappt hat, dürfte sich nun im Ausführungsverzeichnis eures Projektes eine Datei namens Blog.xml befinden. Diese sollte folgenden Inhalt haben:
<?xml version="1.0"?> <Blog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <User>maxmustermann</User> <Pass>superpasswort</Pass> <Url>www.code-bude.net</Url> </Blog>
Das einzige was jetzt noch fehlt, ist die Konvertierung eines nach XML serialisierten Objekts. Das geht sogar noch ein bisschen leichter, als das umwandeln in’s XML-Format.
public Blog DeserializeXmlToBlog()
{
XmlSerializer serializer = new XmlSerializer(typeof(Blog));
FileStream file = new FileStream(Application.StartupPath
+ "\\blog.xml",
FileMode.Open);
//Die Deserialize()-Methode gibt ein Object zurück. => casten!
Blog blogList = serializer.Deserialize(file) as Blog;
file.Close();
return blogList;
}
Zum Abschluss noch mal ein Beispiel, in dem Serialisiert und Deserialisiert wird.
private void buttonSerialisieren_Click(object sender, EventArgs e)
{
Blog blogObject = new Blog();
blogObject.User = "maxmustermann";
blogObject.Pass = "superpasswort";
blogObject.Url = "www.code-bude.net";
SerializeBlogToXML(blogObject);
Blog blogFromXml = DeserializeXmlToBlog();
MessageBox.Show(blogFromXml.Url);
}
Ich hoffe, ich habe das ganze verständlich genug beschrieben. Solltet ihr dennoch Fragen haben, schreibt mir einfach einen Kommentar.
Wer keine Lust hat, den Code von Hand zu tippen bzw. zu kopieren, der kann sich das Beispiel auch als Visual Studio 2010 Projekt herunterladen.
Viele Grüße,
Raffi
Update: MySpace Loader 1.9 released
So, neue Artikel gab es ja nun schon etwas länger nicht mehr. Das unter anderem daran, dass ich ganz gut damit beschäftigt war, den MySpace Loader zu überarbeiten. Und nun ist er fertig!
Vielen Dank, an alle Blogleser, die mir beim beheben der Bugs geholfen haben. Besonderer Dank gilt Hannah, die unermüdlich immer und immer wieder diverse Tests von mir ausgeführt hat, um den Fehler zu finden.
Die neue Version findet ihr hier:
MySpace Loader 1.9 Download
Changelog:
- Bug behoben, der den Download von Songs bei einigen Usern verhinderte
- Updatebenachrichtigungsdienst überarbeitet
English information:
I’ve finished my work on the new MySpaceLoader. The actual version for now is 1.9. In this release I’ve fixed a bug which stopped the download funtionality by some of the MySpaceLoader users. Also I implemented the updatecheck in a better way.
Changelog:
- Fixed the bug, which stopped the download functionality by some users
- Improved the updatecheck/updateservice
Projekt: MySpace Loader – ein MySpace Downloader
For english information scroll down please.
Ich habe die Tage mal wieder ein altes Projekt, welches noch zu Zeiten von net-blog.net enstanden ist, herausgekramt. Es geht um den MySpace Loader, welcher jedoch schon seit längerer Zeit nicht mehr funktionsfähig war. Die Betonung liegt auf war.
Nach einigen Stunden “Schönheitskur” und mehrere Operationen “am offenen Herzen” (am Quellcode), läuft er nun wieder.
Mit dem MySpace Loader könnt ihr, wie der Name schon sagt, Musik von MySpace herunterladen. Das Programm ermöglicht das Downloaden von mehrerern Songs auf einmal und kann diese dann auch in verschiedene Formate konvertieren und auf Wunsch mit ID3-Tags versehen. Das ganze ist, wie auch der Cloud Downloader, kostenlos. (Über eine Spende würde ich mich natürlich dennoch freuen.) Den Downloadlink findet ihr weiter unten im Artikel unter dem Youtube-Video.
Features:
- Lädt jeden Song
- Konvertiert auf Wunsch nach .mp3, .acc, .wma oder .ogg
- Kostenlos (im Gegenteil zu z.B. Musicjacker)
- Schnell, einfach und übersichtlich
Download: MySpace Loader 1.9
(You have to wait 5 seconds for download. After the 5 seconds click on the button on the upper right.)
English information:
The MySpace Loader is a piece of free software, developed and written by myself. With it you can download music from MySpace in less than 3 clicks for free. But that’s not all. The MySpace Loader also can convert your downloaded songs into different file formats like mp3, ogg or acc. If you like, it will automatically tag your songs with ID3-tags. If you want more information, watch the video at this article or write me a comment.
If you like my work, feel free to say thanks with a little donation.
with best regards/viele Grüße,
Raffi
| Du willst helfen? Dann Spende doch einfach. (Für deutsche Nutzer – €). |
You want to help? (For non-german users – $/USD) |
Visual Studio 11 Express Beta unter Windows 7 installieren
Seit gestern gibt es nicht nur die Consumer Preview von Windows 8 zum Download, sondern auch die Betaversion von Visual Studio 11. Da seitens Microsoft versprochen wird, dass man diese auch parallel zur 2010er Version installieren kann, wollte ich mir gestern also die Beta auf meinem Windows 7 PC installieren.
Nichts ahnend habe ich zur Express-Version gegriffen (denn die bleibt im Gegenteil zu Professional und Ultimate auch später noch kostenlos). Doch dann passierte es (siehe Screenshot).
Die Express Version der Beta lässt sich nicht unter Windows 7 installieren. Abhilfe schafft da momentan nur die Wahl einer anderen Edition (z.B. Professional, Premium oder Ultimate). Schade, aber nicht zu ändern. Zudem kommt noch hinzu, dass wer lesen kann, klar im Vorteil ist, denn scrollt man auf der Microsoft-Website etwas weiter herunter, kann man bei den Anforderungen auch lesen, dass die Express Version als einzige nicht zu Windows 7 kompatibel ist.
Ich hoffe ja immer noch, dass das nur während des Beta-Stadiums so sein wird. Andersherum kann ich Microsoft natürlich auch verstehen. So könnte man die Leute, die sich das Geld für die Professional/Ultimate Version sparen wollen, wenigstens dazu bringen, sich eine Windows 8 Lizenz zu kaufen.
Doch ob das so sinnig ist? Denn die Zielgruppe der Express Version sind meistens Schüler/Studenten, die nur hobbymäßig/unkommerziell entwickeln wollen. Bei denen dürfte auch kein Geld für eine Windows 8 Lizenz zu holen sein. Aber das ist alles rein spekulativ.
Wir werden sehen, wie es kommt. Ich für meinen Teil werde jetzt erst mal fleißig die Beta testen.
Viele Grüße,
Raffi
Kurzusammenfassung/Lösung:
Die Express Edition der Visual Studio 11 Beta ist nicht kompatibel mit Windows 7. Abhilfe schafft derzeit nur die Nutzung einer “höherwertigen” Edition, wie z.B. die Professional, Premium oder Ultimate Edition. (Momentan sind auch diese noch kostenlos.)








