Plak Dart links en klik op "Converteren" — wij maken er XML vanPlak Dart-code

Wat deze tool doet

Als je ooit een XML-payload hebt moeten vormgeven zodat die paste bij een Dart-model — voor een Flutter-app die praat met een legacy SOAP-endpoint, een XML-config in Android-stijl, of een RSS-feed-reader — weet je hoeveel boilerplate dat kost. Plak het Dart hier en de tool geeft in één keer nette XML terug. Eén klasse met final-velden, een compleet modelbestand, of een gevulde instantie — de uitkomst is hetzelfde: een compleet XML-document waarin elk veld bewaard blijft.

Dit is geen naïeve string-replace. De converter leest echte Dart: benoemde required-parameters worden elementen in de volgorde waarin ze gedeclareerd zijn, final-velden gedragen zich identiek aan niet-final, DateTime-waarden worden gerenderd als ISO-8601-strings, Duration gebruikt het ISO-8601-duur-format, num, int en double behouden hun numerieke vorm, null (uit nullable-types zoals String?) wordt een leeg element in plaats van weg te vallen, en List<T> wordt een container-element met één kind per item — precies wat de XmlBuilder uit het xml-pakket zou opleveren.

De klassenstructuur blijft behouden. Elke top-level klasse wordt een root-element met de naam van de klasse, elk veld wordt een child-element, geneste klassen worden inline uitgevouwen, en Map<K, V> wordt <entry><key/><value/></entry>-paren. Annotaties zoals @JsonKey(name: "x") uit json_annotation worden gerespecteerd als hints om elementen te hernoemen. Plak een Flutter-model, een data class in freezed-stijl, of een gewone Dart-POJO — de XML ziet eruit zoals een handgeschreven XmlBuilder-aanroep zou produceren, alleen zonder het omhaal.

Hoe je het gebruikt

Drie stappen. Dezelfde flow of je nu één model plakt of een hele <code>lib/models</code>-map.

1

Plak je Dart (of probeer het voorbeeld)

Gooi je Dart zo in de linker editor. Een gewone klasse, een data class met benoemde constructor, meerdere klassen, of een gevulde instantie — prima. Klik op Voorbeeld laden om eerst een realistisch Order-voorbeeld te zien.

Je hoeft imports niet te verwijderen, part-directives niet weg te halen en annotaties niet te wissen. Laat de code zoals hij in je IDE staat. Gewoon plakken.

2

Klik Converteren

Klik op de groene Converteren-knop. De tool leest het Dart, behoudt elke klasse en elk veld, en bouwt de XML in één pass. Tijdens de run flitst er kort een laadindicator.

3

Kopieer de XML

Het rechter paneel vult zich met ingesprongen, welgevormde XML die elke standaard-parser accepteert. Gooi het in een SOAP-request, een Flutter-assetbestand, een config in Android-stijl, of een unit-test-fixture.

Wanneer dit echt handig is

Flutter-apps die met SOAP-services praten

Je Flutter-app moet een legacy SOAP-endpoint aanroepen en de request-body moet passen bij een Dart-model. Plak het model, pak de XML, stop ze in <code>http.post</code> of het <a href="https://pub.dev/packages/xml" target="_blank" rel="noopener">xml</a>-pakket.

RSS- en Atom-feed-generators

Bouw je een podcast- of nieuwsapp die RSS publiceert? Plak het aflevering-model, pak de XML-vorm die je nodig hebt en pak het daarna in met de feed-envelope — geen <code>&lt;item&gt;</code>-kinderen meer met de hand tellen.

Native Android/iOS XML-configs

Moet je een preferences-XML in Android-stijl of een plist-achtige iOS-structuur genereren uit een Dart-model dat in platform channels wordt gebruikt? Plak de klasse en krijg een template dat je alleen nog hoeft bij te schaven.

Testfixtures voor flutter_test

Zet een gevuld model om naar een XML-fixturebestand voor <code>flutter_test</code>, widget golden tests, of gemockte HTTP-responses — een stuk sneller dan fixture-strings handmatig typen.

Veelgestelde vragen

Mag ik meerdere klassen tegelijk plakken?

Ja — plak een heel models.dart-bestand of een complete modellenmap. Elke top-level klasse komt door met uitgevouwen geneste klassen en meegerolde velden uit parent-klassen. Mixins worden zo behandeld dat hun velden meetellen. Er wordt niets stilletjes weggelaten.

Werkt het met freezed of json_serializable data classes?

Ja. Onveranderlijke freezed-achtige klassen en modellen met json_serializable-annotaties worden als normale Dart-klassen behandeld — de velden komen door, @JsonKey(name: "x") wordt als hint om elementen te hernoemen gerespecteerd. Je hoeft build_runner niet te draaien of het gegenereerde .g.dart-bestand te plakken.

Hoe worden DateTime, Duration, null en num behandeld?

DateTime wordt gerenderd als ISO-8601-string (2026-04-21T10:15:00.000Z). Duration als ISO-8601-duur (PT2H30M) of fallback HH:mm:ss. Nullable-types met een null-waarde worden lege elementen (<field/>) in plaats van weggelaten, zodat de XML-vorm consistent blijft. num, int en double worden allemaal als gewone decimale tekst geserialiseerd.

En List, Map en geneste klassen?

List<T> wordt een container-element met één kind per item, genoemd naar het type — een List<OrderItem> items wordt <items><OrderItem/><OrderItem/></items>. Map<K, V> wordt <entry><key/><value/></entry>-paren. Geneste klassen worden inline uitgevouwen, net zoals de XmlBuilder uit het xml-pakket geneste elementen maakt.

Wordt mijn code opgeslagen?

Je Dart wordt naar de backend gestuurd voor conversie en wordt niet bewaard — we loggen de payload niet. Zoals altijd met online tools: als de code echt gevoelige literals bevat (API-sleutels, tokens), haal die eruit of vervang ze door mocks voor je plakt.

En als de klasse dynamic- of Object?-velden gebruikt?

Velden die als dynamic of Object? getypeerd zijn, worden geserialiseerd als string-tekst op basis van de toegewezen literal, want de echte vorm is pas op runtime bekend. Wil je sterkere XML-output, beperk dan het type (String, int, een concrete klasse) — de converter pikt de structuur dan vanzelf op.

Andere tools die je misschien nodig hebt

Dart naar XML is maar één puzzelstukje. Deze passen er goed bij: