Convertitore Swift → XML
Incolla struct Swift o un'istanza popolata. Ti torna XML pulito.
Cosa fa questo tool
Se ti è mai toccato scrivere a mano dell'XML che ricalcasse uno struct Swift — per un plist, un client SOAP che parla con un ERP legacy o una fixture di test per XMLParser — sai bene quante graffe finisci per digitare. Incolla qui lo Swift e ti torna XML ben formato in una passata sola. Un singolo struct, un file con più struct ed enum, o un'istanza popolata let order = Order(...) — stesso risultato: un documento XML completo con ogni proprietà preservata.
Non è sostituzione di stringhe all'ingrosso. Il convertitore sa come Swift serializza davvero — più o meno come lo gestirebbe un XMLEncoder basato su Codable. I valori Decimal escono come testo numerico puro, Date diventa una stringa ISO-8601, UUID il formato hex standard 8-4-4-4-12, e Optional<T> con nil diventa un elemento vuoto invece di scomparire. Gli array seguono una forma di container coerente — ogni array diventa un elemento wrapper con un figlio per ogni item, con il nome del tipo di elemento.
Anche le personalizzazioni di Coding vengono rispettate. Un enum CodingKeys: String, CodingKey annidato rimappa i nomi delle proprietà nell'output, così orderId può uscire come OrderId nell'XML senza che tu tocchi lo struct. Struct ed enum annidati vengono espansi inline. Se incolli più tipi, ognuno finisce nell'output con la propria forma intatta — il convertitore segue gli stessi obiettivi di fondo delle Swift API Design Guidelines, così nomi e casing restano prevedibili.
Come si usa
Tre passaggi. Funziona allo stesso modo sia che tu incolli uno struct da cinque righe sia un file di modelli completo.
Incolla il tuo Swift (o prova l'esempio)
Butta lo Swift così com'è nell'editor di sinistra. Uno struct, un enum con valori associati, un'istanza let popolata o un file con più tipi — va tutto bene. Clicca su Carica esempio se vuoi vedere prima un caso realistico.
Non serve togliere gli import, rimuovere i @propertyWrapper o pulire la sintassi Swift. Lascia il codice come appare in Xcode. Basta incollarlo.
Premi Converti
Clicca sul bottone verde Converti. Il tool legge lo Swift, preserva ogni tipo e proprietà, e costruisce l'XML in una passata. Mentre lavora gira un breve indicatore di caricamento.
Copia l'XML
Il pannello di destra si riempie di XML indentato e ben formato, che qualsiasi parser XML conforme allo standard (XMLParser, lxml, System.Xml, quello che vuoi) accetta. Copialo direttamente nel tuo plist, body SOAP o fixture di test.
Quando ti salva davvero la giornata
Generazione di plist in iOS / macOS
Prendi uno struct di impostazioni Swift e ottieni un documento XML in stile Info.plist che puoi piazzare direttamente in Xcode — niente coppie <code><key></key></code> scritte a mano, niente bug di whitespace. Si sposa bene con le API <a href="https://developer.apple.com/documentation/foundation/propertylistserialization" target="_blank" rel="noopener">PropertyListSerialization</a> di Apple sul lato decoding.
Client SOAP su piattaforme Apple
Un tipo request in Swift deve uscire dall'app come SOAP. Incolla lo struct, butta il body XML su SoapUI o Postman, verifica il contratto senza scrivere la envelope a mano.
Seeding di fixture di test
Trasforma un <code>let order = Order(...)</code> popolato in un test unitario in un file XML di seed per test di integrazione con XCTest, mock server o sistemi backend che parlano ancora XML.
Mantenere la doc allineata
Genera esempi XML per un README, una wiki interna o per documentazione di schemi XSD direttamente dai tuoi modelli Swift reali, così la documentazione non va mai fuori sincrono rispetto al codice.
Domande frequenti
Posso incollare più struct insieme?
Sì — incolla un file intero. Ogni struct o enum di primo livello esce con i tipi annidati espansi e i valori di default compilati. Niente viene silenziato.
Rispetta i CodingKeys?
Sì. Un enum CodingKeys: String, CodingKey annidato rimappa i nomi delle proprietà nell'output XML — case orderId = "OrderId" emetterà <OrderId> invece di <orderId>. Le proprietà non elencate in CodingKeys ricadono sul nome Swift. È lo stesso comportamento che Codable ha nella pratica.
Come gestisce Decimal, Date e Optional?
Decimal esce come testo numerico puro. Date diventa una stringa ISO-8601. UUID diventa una stringa hex standard 8-4-4-4-12. Optional<T> con nil diventa un elemento vuoto invece di scomparire — così la forma resta coerente per chi valida contro un XSD.
E gli enum con valori associati e gli array?
Gli enum con valori associati vengono emessi con un attributo discriminatore che nomina il case, più elementi figli per i valori associati — abbastanza per fare round-trip. Gli array diventano un elemento container con un figlio per item, con il nome del tipo di elemento. Dictionary<K,V> diventa un container di <Entry><Key/><Value/></Entry>.
Il mio codice viene salvato?
Il codice viene mandato al backend per la conversione e non viene persistito — non logghiamo il payload. Come sempre con i tool online, se il codice è davvero sensibile, dacci un'occhiata prima di incollarlo.
Cosa succede se lo Swift ha property wrapper, protocolli o proprietà computed?
I property wrapper vengono scartati fino al valore sottostante nell'output. I protocolli definiscono forma, non contenuto, quindi non producono XML direttamente — ma i tipi che li adottano sì. Le proprietà computed vengono saltate perché sono derivate, non stato. Se il codice ha errori di sintassi, aggiusta prima i più evidenti — il parser è tollerante, ma non psichico.
Altri strumenti che ti possono servire
Swift → XML è solo un pezzo del puzzle. Questi ci stanno bene insieme: