C#-zu-XML-Konverter
Füg C#-Klassen oder -Objekte ein. Bekomm sauberes XML zurück.
Was dieses Tool macht
Wer schon mal per Hand ein XML-Payload passend zu einer C#-Klasse schreiben musste — für einen SOAP-Call, eine Config-Datei, einen WCF-Kontrakt oder eine Test-Fixture — weiß, wie viel Boilerplate das ist. Füg das C# hier ein und du bekommst wohlgeformtes XML in einem Durchgang zurück. Ein einzelner Object Initializer, eine ganze Model-Datei mit mehreren Klassen oder etwas tief Verschachteltes — das Ergebnis ist dasselbe: ein vollständiges XML-Dokument, in dem jede Property erhalten bleibt.
Das ist keine dumme String-Ersetzung. Der Konverter weiß, wie C# tatsächlich zu XML serialisiert: decimal-Suffixe wie 49.99m verlieren das m, DateTime und DateTimeOffset kommen als ISO-8601-Strings raus, Guid wird zum üblichen 8-4-4-4-12-Hex-String, Nullables mit null-Wert werden zu leeren Elementen, und Collections folgen genau der Form, die XmlSerializer erzeugen würde — jede List<T> wird zu einem Container-Element mit einem Kind pro Item, benannt nach dem Element-Typ.
Serialisierungs-Attribute werden ebenfalls respektiert. [XmlRoot("x")] benennt das Root-Element um, [XmlElement("x")] ein Kind-Element, [XmlAttribute("x")] gibt die Property als Attribut statt als Element aus, und [XmlIgnore] wirft sie raus. [DataMember(Name="x")] auf DataContract-Klassen funktioniert genauso. Wenn du mehrere Klassen einfügst, landet jede mit ausgeklappten verschachtelten Typen und geerbten Properties im Output. Nichts verschwindet stillschweigend.
So benutzt du es
Drei Schritte. Läuft gleich, ob du fünf Zeilen oder eine komplette Model-Datei einfügst.
C# einfügen (oder das Beispiel ausprobieren)
Kipp dein C# einfach in den linken Editor. Ein Object Initializer, eine vollständige Klassendefinition, mehrere Klassen oder verschachtelte Typen — alles okay. Klick auf Load Sample, wenn du vorher ein realistisches Beispiel sehen willst.
Du musst keine Kommentare rausnehmen, keine Attribute entfernen und die C#-Syntax nicht aufräumen. Lass den Code so, wie er in deiner IDE aussieht. Einfach einfügen.
Auf Konvertieren klicken
Klick auf den grünen Convert-Button. Das Tool liest das C#, behält jede Klasse und Property und baut das XML in einem Durchgang. Kurz läuft ein Lade-Indikator, dann bist du fertig.
XML kopieren
Das rechte Panel füllt sich mit eingerücktem, wohlgeformtem XML, das jeder standardkonforme XML-Parser akzeptiert. Kopier es direkt in deinen SOAP-Request, in eine Config-Datei, eine Test-Fixture oder in die Doku.
Wann das wirklich was bringt
SOAP-/WCF-Fixtures bauen
Du hast einen C#-Request-Kontrakt und brauchst einen XML-Body für SoapUI oder Postman. Klasse einfügen, XML abgreifen, weitermachen.
Config-Dateien anfangen
Eine Settings-Klasse mit 40 Properties wird zu einem editierbaren XML-Template für app.config, web.config oder jeden anderen XML-basierten Config-Store — ohne handgeschriebenes Boilerplate.
Doku synchron halten
Erzeug XML-Beispiele für ein README, eine API-Referenz oder XSD-gestützte Schema-Doku direkt aus deinen echten Models, damit die Doku zum Code passt.
Testdaten füllen
Mach aus Object Initializern aus deinen Unit-Tests XML-Seed-Dateien für Integrationstests, Mock-Server oder Legacy-Systeme, die immer noch XML sprechen.
Häufige Fragen
Kann ich mehrere Klassen auf einmal einfügen?
Ja — füg eine ganze Datei ein. Jede Top-Level-Klasse kommt mit ausgeklappten verschachtelten Typen und geerbten Properties aus Basisklassen durch. Nichts fällt weg.
Werden Attribute wie [XmlElement], [XmlAttribute] und [XmlIgnore] berücksichtigt?
Ja. [XmlRoot("x")] benennt das Root-Element um, [XmlElement("x")] ein Kind, [XmlAttribute("x")] gibt die Property als Attribut am Parent aus, und [XmlIgnore] wirft sie komplett raus. [DataMember(Name="x")] auf DataContract-Klassen benennt das Element ebenfalls um. Das entspricht genau dem, was XmlSerializer tun würde.
Wie geht er mit decimal, DateTime, Guid und Nullables um?
Decimals (49.99m) verlieren das Suffix und werden zu reinem Zahltext. DateTime und DateTimeOffset kommen als ISO-8601-Strings raus. Guid ist ein normaler 8-4-4-4-12-Hex-String. TimeSpan wird zu einer ISO-8601-Dauer oder HH:mm:ss. Nullables mit null-Wert werden zu leeren Elementen statt weggelassen — so bleibt die Form konsistent.
Was ist mit verschachtelten Klassen, Listen und Dictionaries?
List<T>, Arrays, HashSet<T> und IEnumerable<T> werden alle zu Container-Elementen mit einem Kind pro Item, benannt nach dem Element-Typ — eine List<OrderItem> Items wird zu <Items><OrderItem/><OrderItem/></Items>. Dictionary<K,V> wird zu einem Container von <Entry><Key/><Value/></Entry>. Verschachtelte Object Initializer werden als verschachtelte Elemente mit intakten Feldern ausgeklappt.
Wird mein Code gespeichert?
Dein Code geht zur Konvertierung ans Backend und wird nicht persistiert — wir loggen das Payload nicht. Wie immer bei Online-Tools: Wenn der Code wirklich sensibel ist, schau ihn dir vor dem Einfügen kurz an.
Was, wenn im C# etwas Ungewöhnliches steht — Methoden, Delegates, IntPtr?
Die werden als leere Elemente ausgegeben, statt die ganze Konvertierung abzubrechen — der Rest deines Models kommt also trotzdem durch. Wenn der Code selbst Syntaxfehler hat, fix die offensichtlichen zuerst — der Parser ist tolerant, aber kein Zauberer.
Andere Tools, die du vielleicht brauchst
C# zu XML ist nur ein Teil des Puzzles. Die folgenden Tools passen gut dazu: