Convertitore da C# a XML
Incolla classi o oggetti C#. Ottieni XML pulito in risposta.
Cosa fa questo strumento
Se ti è mai capitato di dover mettere insieme a mano un payload XML che rispecchi una classe C# — per una chiamata SOAP, un file di config, un contratto WCF o una fixture di test — sai quanto boilerplate sia. Incolla qui il C# e ottieni XML ben formato in un'unica passata. Un singolo object initializer, un intero file di modelli con più classi o qualcosa di profondamente annidato — stesso risultato: un documento XML completo con ogni proprietà preservata.
Non è uno stupido string-replace. Il convertitore sa come C# serializza davvero in XML: suffissi decimal come 49.99m perdono la m, DateTime e DateTimeOffset escono come stringhe ISO-8601, Guid diventa una stringa esadecimale standard 8-4-4-4-12, i nullable con valore null diventano elementi vuoti, e le collection seguono la stessa forma che XmlSerializer produrrebbe — ogni List<T> diventa un elemento container con un figlio per item, con il nome del tipo dell'elemento.
Anche gli attributi di serializzazione vengono rispettati. [XmlRoot("x")] rinomina l'elemento radice, [XmlElement("x")] rinomina un figlio, [XmlAttribute("x")] emette la proprietà come attributo invece che come elemento, e [XmlIgnore] la scarta. [DataMember(Name="x")] sulle classi DataContract funziona allo stesso modo. Se incolli più classi, ciascuna arriva nell'output con i tipi annidati espansi e le proprietà ereditate incluse. Niente viene perso silenziosamente.
Come si usa
Tre passaggi. Funziona allo stesso modo sia che incolli cinque righe sia un intero file di modelli.
Incolla il C# (o prova l'esempio)
Butta il tuo C# nell'editor di sinistra così com'è. Un object initializer, una definizione di classe completa, più classi o tipi annidati — tutto ok. Clicca Carica esempio se vuoi vedere prima un caso realistico.
Non serve togliere commenti, rimuovere attributi o ripulire la sintassi C#. Lascia il codice com'è nella tua IDE. Basta incollare.
Premi Converti
Clicca il bottone verde Converti. Lo strumento legge il C#, preserva ogni classe e proprietà e costruisce l'XML in una sola passata. Vedrai un breve indicatore di caricamento mentre lavora.
Copia l'XML
Il pannello di destra si riempie di XML indentato e ben formato, accettato da qualsiasi parser XML conforme agli standard. Copialo direttamente nella tua richiesta SOAP, file di config, fixture di test o documentazione.
Quando torna davvero utile
Costruire fixture SOAP / WCF
Hai un contratto di request in C# e ti serve un body XML da buttare in SoapUI o Postman. Incolli la classe, prendi l'XML, vai avanti.
Inizializzare file di configurazione
Una classe Settings con 40 proprietà si trasforma in un template XML pronto da modificare per app.config, web.config o qualsiasi config store basato su XML — niente boilerplate scritto a mano.
Tenere la documentazione allineata
Genera esempi XML per un README, una reference API o una documentazione di schema XSD direttamente dai tuoi modelli reali, così la documentazione combacia con il codice.
Popolare dati di test
Trasforma gli object initializer dei tuoi unit test in file seed XML per test di integrazione, mock server o sistemi legacy che parlano ancora XML.
Domande frequenti
Posso incollare più classi insieme?
Sì — incolla un intero file. Ogni classe di primo livello esce con i tipi annidati espansi e le proprietà ereditate dalle classi base incluse. Niente viene scartato.
Rispetta attributi come [XmlElement], [XmlAttribute] e [XmlIgnore]?
Sì. [XmlRoot("x")] rinomina l'elemento radice, [XmlElement("x")] rinomina un figlio, [XmlAttribute("x")] emette la proprietà come attributo del padre, e [XmlIgnore] la rimuove del tutto. [DataMember(Name="x")] sulle classi DataContract rinomina anch'esso l'elemento. È lo stesso comportamento di XmlSerializer.
Come gestisce decimal, DateTime, Guid e i nullable?
I decimal (49.99m) perdono il suffisso e diventano testo numerico puro. DateTime e DateTimeOffset escono come stringhe ISO-8601. Guid è una stringa esadecimale standard 8-4-4-4-12. TimeSpan diventa una durata ISO-8601 o HH:mm:ss. I nullable con valore null diventano elementi vuoti invece di essere scartati — così la forma rimane coerente.
E classi annidate, liste e dictionary?
List<T>, array, HashSet<T> e IEnumerable<T> diventano elementi container con un figlio per item, con il nome del tipo dell'elemento — una List<OrderItem> Items diventa <Items><OrderItem/><OrderItem/></Items>. Dictionary<K,V> diventa un container di <Entry><Key/><Value/></Entry>. Gli object initializer annidati vengono espansi come elementi annidati con ogni campo intatto.
Il mio codice viene salvato?
Il tuo codice viene inviato al backend per la conversione e non viene conservato — non logghiamo il payload. Come sempre con strumenti online, se il codice è davvero sensibile dagli un'occhiata prima di incollarlo.
E se il C# ha qualcosa di strano — metodi, delegate, IntPtr?
Quelli vengono emessi come elementi vuoti invece di far fallire l'intera conversione, così il resto del modello passa comunque. Se il codice ha errori di sintassi, sistema quelli evidenti prima — il parser è tollerante, non magico.
Altri strumenti che potrebbero servirti
Da C# a XML è un pezzo del puzzle. Ecco gli strumenti che si abbinano bene: