Dart-zu-XML-Konverter
Füge Dart-Klassen oder -Objekte ein. Du bekommst sauberes XML zurück.
Was dieses Tool macht
Wenn du schon mal ein XML-Payload an ein Dart-Modell anpassen musstest — für eine Flutter-App, die mit einem alten SOAP-Endpoint redet, eine XML-Config im Android-Stil, oder einen RSS-Feed-Reader — weißt du, wie viel Boilerplate das bedeutet. Füge das Dart hier ein und das Tool gibt dir in einem Rutsch wohlgeformtes XML zurück. Eine Klasse mit final-Feldern, eine ganze Modelldatei, oder eine befüllte Instanz — das Ergebnis ist dasselbe: ein vollständiges XML-Dokument, bei dem jedes Feld erhalten bleibt.
Das ist kein naives String-Replace. Der Konverter liest echtes Dart: benannte required-Parameter werden in Deklarationsreihenfolge zu Elementen, final-Felder verhalten sich identisch zu nicht-final-Feldern, DateTime-Werte landen als ISO-8601-Strings, Duration nutzt das ISO-8601-Dauerformat, num, int und double behalten ihre Zahlenform, null (aus Nullable-Typen wie String?) wird zu einem leeren Element statt einfach wegzufallen, und List<T> wird zu einem Container-Element mit einem Kind pro Eintrag — genau das, was der XmlBuilder aus dem xml-Paket auch ausgeben würde.
Die Klassenstruktur bleibt erhalten. Jede Top-Level-Klasse wird zu einem Root-Element, das nach der Klasse benannt ist, jedes Feld wird zu einem Child-Element, verschachtelte Klassen werden inline aufgeklappt, und Map<K, V> wird zu <entry><key/><value/></entry>-Paaren. Annotationen wie @JsonKey(name: "x") aus json_annotation werden als Hinweise zum Umbenennen von Elementen berücksichtigt. Füge ein Flutter-Modell, eine Datenklasse im freezed-Stil oder ein schlichtes Dart-POJO ein — das XML sieht so aus, wie ein handgeschriebener XmlBuilder-Aufruf es produzieren würde, nur ohne den ganzen Zirkus.
So benutzt du es
Drei Schritte. Derselbe Ablauf, egal ob du ein einzelnes Modell oder einen ganzen <code>lib/models</code>-Ordner einfügst.
Füge dein Dart ein (oder probier das Beispiel)
Kipp dein Dart einfach so in den linken Editor. Eine normale Klasse, eine Datenklasse mit benanntem Konstruktor, mehrere Klassen, oder eine befüllte Instanz — alles passt. Klicke auf Beispiel laden, um vorher ein realistisches Order-Beispiel zu sehen.
Du musst keine Imports entfernen, part-Direktiven rausnehmen oder Annotationen löschen. Lass den Code so, wie er in deiner IDE aussieht. Einfach einfügen.
Auf Konvertieren klicken
Klicke den grünen Konvertieren-Button. Das Tool liest das Dart, behält jede Klasse und jedes Feld bei und baut das XML in einem Durchgang. Während es läuft, blinkt kurz ein Lade-Indikator.
Das XML kopieren
Das rechte Panel füllt sich mit eingerücktem, wohlgeformtem XML, das jeder standardkonforme Parser annimmt. Kopier es in eine SOAP-Anfrage, eine Flutter-Assetdatei, eine Android-Config oder ein Unit-Test-Fixture.
Wann das wirklich praktisch ist
Flutter-Apps, die mit SOAP-Diensten reden
Deine Flutter-App muss einen alten SOAP-Endpoint ansprechen und der Request-Body muss zu einem Dart-Modell passen. Füge das Modell ein, nimm das XML und gib es an <code>http.post</code> oder das <a href="https://pub.dev/packages/xml" target="_blank" rel="noopener">xml</a>-Paket.
RSS- und Atom-Feed-Generatoren
Du baust eine Podcast- oder News-App, die RSS veröffentlicht? Füge das Episoden-Modell ein, hol dir die nötige XML-Form und wickle sie dann mit dem Feed-Envelope — keine handgezählten <code><item></code>-Kinder mehr.
Native Android/iOS-XML-Configs
Musst du aus einem Dart-Modell, das in Platform Channels genutzt wird, eine Preferences-XML im Android-Stil oder eine iOS-plist-ähnliche Struktur erzeugen? Füge die Klasse ein und bekomm ein Template, das du nur noch anpassen musst.
Test-Fixtures für flutter_test
Mach aus einem befüllten Modell eine XML-Fixture-Datei für <code>flutter_test</code>, Widget-Golden-Tests oder Mock-HTTP-Antworten — deutlich schneller als Fixture-Strings von Hand zu tippen.
Häufige Fragen
Kann ich mehrere Klassen auf einmal einfügen?
Ja — füge eine ganze models.dart-Datei oder einen kompletten Modellordner ein. Jede Top-Level-Klasse kommt durch, mit aufgeklappten verschachtelten Klassen und eingerollten Feldern der Parent-Klassen. Mixins werden so behandelt, dass sie ihre Felder beisteuern. Nichts geht still verloren.
Klappt das mit freezed- oder json_serializable-Datenklassen?
Ja. Unveränderliche Klassen im freezed-Stil und mit json_serializable annotierte Modelle werden wie normale Dart-Klassen behandelt — die Felder kommen durch, @JsonKey(name: "x") wird als Hinweis zum Umbenennen übernommen. Du musst nicht erst build_runner laufen lassen oder die generierte .g.dart-Datei einfügen.
Wie werden DateTime, Duration, null und num behandelt?
DateTime landet als ISO-8601-String (2026-04-21T10:15:00.000Z). Duration wird als ISO-8601-Dauer (PT2H30M) oder Fallback HH:mm:ss ausgegeben. Nullable-Typen mit null-Wert werden zu leeren Elementen (<field/>), statt weggelassen zu werden, damit die XML-Struktur konsistent bleibt. num, int und double werden alle als schlichter Dezimal-Text serialisiert.
Was ist mit List, Map und verschachtelten Klassen?
List<T> wird zu einem Container-Element mit einem Kind pro Eintrag, benannt nach dem Elementtyp — eine List<OrderItem> items wird zu <items><OrderItem/><OrderItem/></items>. Map<K, V> wird zu <entry><key/><value/></entry>-Paaren. Verschachtelte Klassen werden inline aufgeklappt, genauso wie der XmlBuilder aus dem xml-Paket verschachtelte Elemente erzeugt.
Wird mein Code gespeichert?
Dein Dart wird zur Konvertierung ans Backend geschickt und nicht aufbewahrt — wir loggen den Payload nicht. Wie immer bei Online-Tools: wenn der Code wirklich sensible Literale enthält (API-Keys, Tokens), vor dem Einfügen maskieren oder mit Platzhaltern ersetzen.
Was, wenn die Klasse dynamic- oder Object?-Felder nutzt?
Felder, die als dynamic oder Object? typisiert sind, werden als String-Text auf Basis des zugewiesenen Literals serialisiert, weil die echte Form erst zur Laufzeit bekannt ist. Für eine kräftigere XML-Ausgabe engst du den Typ ein (String, int, eine konkrete Klasse) — der Konverter nimmt die Struktur dann automatisch auf.
Weitere Tools, die du brauchen könntest
Dart zu XML ist nur ein Puzzlestück. Diese passen gut dazu: