Colle ton Dart à gauche et clique sur "Convertir" — on le transforme en XMLColle du code Dart

Ce que fait cet outil

Si tu as déjà dû modeler un payload XML qui colle à un modèle Dart — pour une appli Flutter qui cause à un endpoint SOAP legacy, une config XML à la Android, ou un lecteur de flux RSS — tu sais à quel point le boilerplate est pénible. Colle ton Dart ici et l’outil renvoie du XML bien formé en une seule passe. Une classe avec des champs final, un fichier modèle complet, ou une instance déjà remplie — même résultat : un document XML complet avec chaque champ préservé.

Ce n’est pas un simple remplacement de chaînes. Le convertisseur lit du vrai Dart : les paramètres nommés required deviennent des éléments dans leur ordre de déclaration, les champs final se comportent exactement comme les non-final, les valeurs DateTime sortent en chaînes ISO-8601, Duration utilise le format de durée ISO-8601, num, int et double conservent leur forme numérique, null (venant de types nullables comme String?) devient un élément vide au lieu d’être oublié, et List<T> devient un élément conteneur avec un enfant par item — exactement ce que l’XmlBuilder du package xml émettrait.

La structure des classes est préservée. Chaque classe de premier niveau devient un élément racine nommé d’après la classe, chaque champ devient un élément enfant, les classes imbriquées sont déployées inline, et Map<K, V> se transforme en paires <entry><key/><value/></entry>. Les annotations comme @JsonKey(name: "x") de json_annotation sont respectées comme indices pour renommer les éléments. Colle un modèle Flutter, une classe de données style freezed, ou un simple POJO Dart — le XML ressemble à ce qu’un appel XmlBuilder écrit à la main produirait, mais sans toute la cérémonie.

Comment l’utiliser

Trois étapes. Même flux que tu colles un seul modèle ou un dossier <code>lib/models</code> entier.

1

Colle ton Dart (ou essaie l’exemple)

Balance ton Dart tel quel dans l’éditeur de gauche. Une classe classique, une classe de données avec constructeur nommé, plusieurs classes, ou une instance remplie — tout passe. Clique sur Charger un exemple pour voir d’abord un cas Order réaliste.

Pas besoin de virer les imports, supprimer les directives part ou enlever les annotations. Garde le code tel qu’il apparaît dans ton IDE. Colle, c’est tout.

2

Clique sur Convertir

Clique sur le bouton vert Convertir. L’outil lit le Dart, conserve chaque classe et chaque champ, puis construit le XML en une seule passe. Un petit indicateur de chargement s’affiche pendant l’opération.

3

Copie le XML

Le panneau de droite se remplit de XML indenté et bien formé, accepté par n’importe quel parser respectant les standards. Balance-le dans une requête SOAP, un fichier d’assets Flutter, une config style Android ou un fixture de test unitaire.

Quand ça sert vraiment

Applis Flutter qui parlent à des services SOAP

Ton appli Flutter doit appeler un endpoint SOAP legacy et le corps de la requête doit coller à un modèle Dart. Colle le modèle, récupère le XML, passe-le à <code>http.post</code> ou au package <a href="https://pub.dev/packages/xml" target="_blank" rel="noopener">xml</a>.

Générateurs de flux RSS et Atom

Tu construis une appli de podcasts ou de news qui publie du RSS ? Colle le modèle d’épisode, récupère la forme XML voulue, puis enveloppe-la avec l’enveloppe du flux — sans compter à la main les enfants <code>&lt;item&gt;</code>.

Configs XML natives Android/iOS

Tu dois produire un XML de préférences à la Android ou une structure style plist iOS depuis un modèle Dart utilisé dans des platform channels ? Colle la classe et récupère un template prêt à ajuster.

Fixtures de tests pour flutter_test

Transforme un modèle rempli en fichier de fixture XML pour <code>flutter_test</code>, les golden tests de widgets, ou les réponses HTTP mockées — bien plus rapide que d’écrire des chaînes de fixture à la main.

Questions fréquentes

Je peux coller plusieurs classes d’un coup ?

Oui — colle un fichier models.dart complet ou un dossier de modèles entier. Chaque classe de premier niveau ressort avec les classes imbriquées déployées et les champs des classes parent intégrés. Les mixins sont traités comme contribuant leurs champs. Rien n’est silencieusement oublié.

Ça marche avec les classes freezed ou json_serializable ?

Oui. Les classes immuables style freezed et les modèles annotés json_serializable sont traités comme des classes Dart normales — les champs passent, @JsonKey(name: "x") est respecté comme indice pour renommer les éléments. Pas besoin de lancer build_runner ni de coller le fichier .g.dart généré.

Comment sont gérés DateTime, Duration, null et num ?

DateTime sort en chaîne ISO-8601 (2026-04-21T10:15:00.000Z). Duration sort en durée ISO-8601 (PT2H30M) ou en fallback HH:mm:ss. Les types nullables avec une valeur null deviennent des éléments vides (<field/>) plutôt que d’être omis, pour garder la forme XML cohérente. num, int et double se sérialisent tous en texte décimal simple.

Et avec List, Map et les classes imbriquées ?

List<T> devient un élément conteneur avec un enfant par item, nommé d’après le type — une List<OrderItem> items devient <items><OrderItem/><OrderItem/></items>. Map<K, V> devient des paires <entry><key/><value/></entry>. Les classes imbriquées sont déployées inline, comme l’XmlBuilder du package xml produit ses éléments imbriqués.

Mon code est-il stocké ?

Ton Dart est envoyé au backend pour conversion et n’est pas persisté — on ne logue pas le payload. Comme toujours avec des outils en ligne, si le code contient des littéraux vraiment sensibles (clés d’API, tokens), nettoie-les ou mocke-les avant de coller.

Et si la classe utilise des champs dynamic ou Object ?

Les champs typés dynamic ou Object? sont sérialisés en texte selon la valeur littérale assignée, puisque la forme réelle n’est connue qu’à l’exécution. Pour une sortie XML plus forte, précise le type (String, int, une classe concrète) et le convertisseur captera la structure automatiquement.

D’autres outils qui peuvent servir

Dart vers XML n’est qu’une brique. Ceux-ci s’y marient bien :