Incolla Dart a sinistra e clicca "Converti" — lo trasformiamo in XMLIncolla codice Dart

Cosa fa questo strumento

Se ti è mai capitato di dover modellare un payload XML per farlo combaciare con un modello Dart — per un'app Flutter che parla con un endpoint SOAP legacy, una config XML stile Android, o un lettore di feed RSS — sai quanto boilerplate richiede. Incolla il Dart qui e lo strumento ti restituisce XML ben formato in un colpo solo. Una classe con campi final, un intero file di modelli, o un'istanza già popolata — stesso risultato: un documento XML completo con ogni campo preservato.

Non è una sostituzione ingenua di stringhe. Il convertitore legge Dart vero: i parametri nominati required diventano elementi nell'ordine di dichiarazione, i campi final si comportano esattamente come quelli non final, i valori DateTime vengono renderizzati come stringhe ISO-8601, Duration usa il formato durata ISO-8601, num, int e double mantengono la loro forma numerica, null (da tipi nullable come String?) diventa un elemento vuoto invece di essere scartato, e List<T> diventa un elemento contenitore con un figlio per voce — come farebbe l'XmlBuilder del pacchetto xml.

La struttura delle classi viene mantenuta. Ogni classe di primo livello diventa un elemento radice con il nome della classe, ogni campo diventa un elemento figlio, le classi annidate vengono espanse inline, e Map<K, V> diventa coppie <entry><key/><value/></entry>. Annotazioni come @JsonKey(name: "x") di json_annotation vengono rispettate come suggerimenti per rinominare gli elementi. Incolla un modello Flutter, una data class in stile freezed, o un POJO Dart normale — l'XML viene fuori come se l'avessi scritto a mano con XmlBuilder, senza tutta la trafila.

Come si usa

Tre passaggi. Stesso flusso sia che tu incolli un singolo modello o un'intera cartella <code>lib/models</code>.

1

Incolla il tuo Dart (o prova l'esempio)

Butta il tuo Dart nell'editor di sinistra così com'è. Una classe normale, una data class con costruttore nominato, più classi, o un'istanza popolata — tutto va bene. Clicca Carica esempio per vedere prima un caso realistico di Order.

Non serve rimuovere gli import, togliere le direttive part, né eliminare le annotazioni. Lascia il codice com'è nell'IDE. Basta incollarlo.

2

Premi Converti

Clicca il pulsante verde Converti. Lo strumento legge il Dart, mantiene ogni classe e campo, e costruisce l'XML in un'unica passata. Mentre lavora compare un piccolo indicatore.

3

Copia l'XML

Il pannello di destra si riempie di XML indentato e ben formato, accettato da qualunque parser standard. Incollalo in una richiesta SOAP, un file di asset Flutter, una config stile Android, o una fixture di test unitari.

Quando serve davvero

App Flutter che parlano con servizi SOAP

La tua app Flutter deve chiamare un endpoint SOAP legacy e il corpo della richiesta deve combaciare con un modello Dart. Incolla il modello, prendi l'XML, passalo a <code>http.post</code> o al pacchetto <a href="https://pub.dev/packages/xml" target="_blank" rel="noopener">xml</a>.

Generatori di feed RSS e Atom

Stai costruendo un'app di podcast o di news che pubblica RSS? Incolla il modello dell'episodio, prendi la forma XML che ti serve, poi racchiudila nell'envelope del feed — niente figli <code>&lt;item&gt;</code> da contare a mano.

Config XML native Android/iOS

Devi produrre un XML di preferenze stile Android o una struttura simile a plist iOS da un modello Dart usato nei platform channels? Incolla la classe e ottieni un template pronto da ritoccare.

Fixture di test per flutter_test

Trasforma un modello popolato in un file di fixture XML per <code>flutter_test</code>, golden test dei widget, o risposte HTTP mockate — molto più veloce che scrivere stringhe di fixture a mano.

Domande frequenti

Posso incollare più classi insieme?

Sì — incolla un intero models.dart o un'intera cartella di modelli. Ogni classe di primo livello viene fuori con le classi annidate espanse e i campi delle classi padre inclusi. I mixin vengono trattati come se contribuissero coi loro campi. Niente viene scartato in silenzio.

Funziona con le data class freezed o json_serializable?

Sì. Le classi immutabili stile freezed e i modelli annotati con json_serializable vengono trattati come normali classi Dart — i campi passano, e @JsonKey(name: "x") viene rispettato come suggerimento per rinominare gli elementi. Non devi eseguire build_runner né incollare il file .g.dart generato.

Come vengono gestiti DateTime, Duration, null e num?

DateTime viene renderizzato come stringa ISO-8601 (2026-04-21T10:15:00.000Z). Duration come durata ISO-8601 (PT2H30M) o fallback HH:mm:ss. I tipi nullable con valore null diventano elementi vuoti (<field/>) invece di essere omessi, così la forma XML resta coerente. num, int e double vengono tutti serializzati come semplice testo decimale.

E con List, Map e classi annidate?

List<T> diventa un elemento contenitore con un figlio per voce, chiamato come il tipo — una List<OrderItem> items diventa <items><OrderItem/><OrderItem/></items>. Map<K, V> diventa coppie <entry><key/><value/></entry>. Le classi annidate vengono espanse inline, allo stesso modo in cui l'XmlBuilder del pacchetto xml produce elementi annidati.

Il mio codice viene salvato?

Il tuo Dart viene inviato al backend per la conversione e non è persistito — non logghiamo il payload. Come sempre con gli strumenti online, se il codice contiene letterali davvero sensibili (chiavi API, token), ripuliscili o sostituiscili con dei mock prima di incollare.

E se la classe usa campi dynamic o Object?

I campi tipizzati come dynamic o Object? vengono serializzati come testo stringa basato sul letterale assegnato, visto che la forma reale si conosce solo a runtime. Per un output XML più forte, restringi il tipo (String, int, una classe concreta) e il convertitore prenderà automaticamente la struttura.

Altri strumenti che potrebbero servirti

Dart in XML è solo un pezzo del puzzle. Questi si sposano bene: