Dart-til-XML-konverter
Indsæt Dart-klasser eller -objekter. Få ren XML tilbage.
Hvad værktøjet gør
Hvis du nogensinde har skullet forme en XML-payload, så den passer til en Dart-model — til en Flutter-app, der snakker med et ældre SOAP-endpoint, en XML-konfig i Android-stil, eller en RSS-feedlæser — ved du, hvor meget boilerplate det er. Indsæt Dart-koden her, og værktøjet giver dig velformet XML tilbage i ét hug. En klasse med final-felter, en hel modelfil eller en udfyldt instans — samme resultat: et komplet XML-dokument, hvor hvert felt er bevaret.
Det er ikke naiv streng-erstatning. Konverteren læser ægte Dart: navngivne required-parametre bliver til elementer i deklarationsrækkefølgen, final-felter opfører sig præcis som ikke-final, DateTime-værdier renderes som ISO-8601-strenge, Duration bruger ISO-8601-varighedsformat, num, int og double beholder deres numeriske form, null (fra nullable-typer som String?) bliver et tomt element i stedet for at blive droppet, og List<T> bliver til et container-element med ét barn pr. post — præcis som XmlBuilder fra pakken xml ville udsende.
Klassestrukturen bevares. Hver top-level-klasse bliver et rod-element opkaldt efter klassen, hvert felt bliver et barn-element, indlejrede klasser pakkes ud inline, og Map<K, V> bliver til <entry><key/><value/></entry>-par. Annotationer som @JsonKey(name: "x") fra json_annotation respekteres som hints til at omdøbe elementer. Indsæt en Flutter-model, en data class i freezed-stil eller en almindelig Dart-POJO — XML-en ligner det, et håndskrevet XmlBuilder-kald ville producere, bare uden ceremonien.
Sådan bruger du det
Tre trin. Samme flow, uanset om du indsætter en enkelt model eller en hel <code>lib/models</code>-mappe.
Indsæt din Dart (eller prøv eksemplet)
Smid din Dart, som den er, i editoren til venstre. En almindelig klasse, en data class med navngiven konstruktør, flere klasser eller en udfyldt instans — alt virker. Klik på Indlæs eksempel for først at se et realistisk Order-eksempel.
Du behøver ikke fjerne imports, pille part-direktiver ud eller slette annotationer. Lad koden stå som i din IDE. Bare indsæt.
Tryk Konverter
Klik på den grønne Konverter-knap. Værktøjet læser Dart, holder hver klasse og hvert felt intakt og bygger XML i én omgang. En kort loading-indikator blinker, mens det kører.
Kopier XML-en
Højre panel fyldes med indrykket, velformet XML, som enhver standardkonform parser accepterer. Smid det ind i en SOAP-forespørgsel, en Flutter-asset-fil, en Android-stil-konfig eller en enhedstest-fixture.
Hvornår det faktisk er praktisk
Flutter-apps, der snakker med SOAP-tjenester
Din Flutter-app skal kalde et ældre SOAP-endpoint, og request-body skal matche en Dart-model. Indsæt modellen, tag XML-en, giv den til <code>http.post</code> eller pakken <a href="https://pub.dev/packages/xml" target="_blank" rel="noopener">xml</a>.
RSS- og Atom-feed-generatorer
Bygger du en podcast- eller nyhedsapp, der udgiver RSS? Indsæt episode-modellen, få den XML-form, du skal bruge, og pak den bagefter i feed-konvolutten — ingen håndtælling af <code><item></code>-børn.
Native Android/iOS XML-configs
Skal du lave en preferences-XML i Android-stil eller en plist-lignende iOS-struktur ud fra en Dart-model, der bruges i platform channels? Indsæt klassen og få en skabelon, der bare skal finjusteres.
Testfixtures til flutter_test
Lav en udfyldt model om til en XML-fixture-fil til <code>flutter_test</code>, golden tests for widgets eller mockede HTTP-svar — langt hurtigere end at skrive fixture-strenge i hånden.
Typiske spørgsmål
Kan jeg indsætte flere klasser på én gang?
Ja — indsæt en hel models.dart-fil eller en komplet model-mappe. Hver top-level-klasse kommer igennem med indlejrede klasser pakket ud og felter fra forælder-klasser rullet ind. Mixins behandles, som om de bidrager med deres felter. Intet ryger i det stille.
Virker det med freezed eller json_serializable data classes?
Ja. Uforanderlige klasser i freezed-stil og modeller annoteret med json_serializable behandles som almindelige Dart-klasser — felterne kommer igennem, og @JsonKey(name: "x") respekteres som et hint til at omdøbe elementer. Du behøver ikke først at køre build_runner eller indsætte den genererede .g.dart-fil.
Hvordan håndteres DateTime, Duration, null og num?
DateTime renderes som en ISO-8601-streng (2026-04-21T10:15:00.000Z). Duration renderes som en ISO-8601-varighed (PT2H30M) eller fallback HH:mm:ss. Nullable-typer med en null-værdi bliver til tomme elementer (<field/>) i stedet for at blive udeladt, så XML-formen holder sig konsistent. num, int og double serialiseres alle som almindelig decimal-tekst.
Hvad med List, Map og indlejrede klasser?
List<T> bliver til et container-element med ét barn pr. post, navngivet efter typen — en List<OrderItem> items bliver til <items><OrderItem/><OrderItem/></items>. Map<K, V> bliver til <entry><key/><value/></entry>-par. Indlejrede klasser pakkes ud inline, præcis som XmlBuilder fra pakken xml laver indlejrede elementer.
Bliver min kode gemt?
Din Dart sendes til backend til konvertering og opbevares ikke — vi logger ikke payloaden. Som altid med onlineværktøjer: hvis koden indeholder virkelig følsomme literaler (API-nøgler, tokens), så rens dem eller erstat dem med mocks, før du indsætter.
Hvad hvis klassen bruger dynamic- eller Object?-felter?
Felter typed som dynamic eller Object? serialiseres som strengtekst baseret på den tildelte literalværdi, da den faktiske form først er kendt ved runtime. Vil du have stærkere XML-output, så indsnævr typen (String, int, en konkret klasse) — konverteren opfanger strukturen automatisk.
Andre værktøjer, du måske kan bruge
Dart til XML er kun én brik. De her passer godt sammen med det: