Convertitore Ruby to XML
Incolla classi od oggetti Ruby. Ti torna XML pulito.
Cosa fa questo strumento
Se ti è mai toccato montare a mano un payload XML per farlo combaciare con una classe Ruby — magari per una fixture to_xml di Rails, una vecchia chiamata SOAP, o un template Nokogiri Builder — sai quanto in fretta si accumula il boilerplate. Incolla qui il Ruby e lo strumento ti restituisce XML ben formato in un colpo solo. Una classe con attr_accessor, uno Struct.new, un intero file di modelli, o oggetti profondamente annidati — il risultato è lo stesso: un documento XML completo con ogni campo preservato.
Non è solo sostituzione di stringhe. Il convertitore capisce come i valori Ruby si serializzano per davvero: BigDecimal("49.99") esce come semplice stringa numerica (niente notazione scientifica), Time e DateTime vengono resi come stringhe ISO-8601, i Symbol perdono i due punti iniziali, nil diventa un elemento vuoto invece di essere rimosso, e gli array diventano elementi contenitore con un figlio per voce — esattamente quello che Nokogiri::XML::Builder e il to_xml di Rails di solito producono.
Anche la struttura delle classi viene rispettata. Ogni classe di primo livello diventa un elemento radice chiamato come la classe (in snake_case), i simboli di attr_accessor diventano elementi figli, gli oggetti annidati vengono espansi inline, e gli array di OrderItem si trasformano in un wrapper <items> con un figlio <order_item> per voce. Gli hash producono elementi figli chiave/valore. Gli attributi ereditati passano anche loro. Se incolli un modello Rails o un semplice PORO, il risultato somiglia a quello che ti darebbero render xml: o REXML::Document.new (vedi REXML), senza tutta la cerimonia.
Come usarlo
Tre passi. Stesso flusso sia che incolli un singolo Struct sia un'intera cartella lib.
Incolla il tuo Ruby (o prova l'esempio)
Butta il tuo Ruby così com'è nell'editor di sinistra. Una classe attr_accessor, una scorciatoia Struct.new, più classi, o un'istanza già popolata — va bene tutto. Clicca Carica esempio per vedere prima un caso realistico di Order.
Non serve togliere le righe require, rimuovere moduli o semplificare la sintassi. Lascia il codice com'è nel tuo editor. Incolla e basta.
Premi Converti
Clicca il bottone verde Converti. Lo strumento legge il Ruby, tiene ogni classe e attributo, e costruisce l'XML in un colpo solo. Durante l'elaborazione compare un breve luccichio.
Copia l'XML
Il pannello di destra si riempie di XML indentato e ben formato che qualsiasi parser conforme agli standard accetta. Piazzalo in una richiesta SOAP, in un file fixture per RSpec, in un test di integrazione Rails o nella doc della tua API.
Quando serve davvero
Costruire fixture Nokogiri o Builder
Hai una classe Ruby e ti serve un template XML per Nokogiri::XML::Builder o un template ERB. Incolla la classe, prendi l'XML, mettilo nel tuo blocco Builder — fatto.
Dati seed Rails to_xml
Un modello ActiveRecord o PORO con 20 attributi diventa un file XML seed pronto da modificare per i tuoi test di integrazione o per un sistema esterno che ancora vuole XML.
Integrazioni SOAP legacy
Un client Ruby che parla con un vecchio servizio SOAP/XML-RPC ha bisogno di un body di richiesta che combaci con una classe Ruby. Incolla il modello, prendi la forma dell'envelope XML e smetti di litigare con i template <a href="https://www.ruby-doc.org/" target="_blank" rel="noopener">Savon</a>.
Tenere doc e codice allineati
Genera esempi di risposta XML per un README, un riferimento API, o documentazione basata su XSD direttamente dai veri modelli Ruby, così la doc non si disallinea mai dal codice.
Domande frequenti
Posso incollare più classi in una volta?
Sì — incolla pure un file lib intero. Ogni classe di primo livello esce con le classi annidate espanse e gli attributi della superclasse inclusi. I mixin sono trattati come contributori dei loro attr_accessor. Nulla viene scartato in silenzio.
La scorciatoia Struct.new funziona?
Sì. Order = Struct.new(:order_id, :customer_name, :total_amount) viene trattato come una classe con i corrispondenti attr_accessor. Gli struct keyword-style (Struct.new(:a, keyword_init: true)) funzionano anche loro — l'XML risultante è identico in entrambi i casi.
Come vengono gestiti BigDecimal, Time, Symbol e nil?
BigDecimal("49.99") diventa la semplice stringa 49.99 (niente notazione scientifica, niente marcatore bd finale). Time, DateTime e Date vengono resi come stringhe ISO-8601. I Symbol perdono i due punti e diventano testo puro. nil diventa un elemento vuoto (<field/>) invece di sparire, così la forma dell'XML rimane coerente.
E array, hash e oggetti annidati?
Gli array diventano elementi contenitore — items = [OrderItem.new, OrderItem.new] diventa <items><order_item/><order_item/></items>, un figlio per voce, chiamato come la classe dell'elemento. Gli hash diventano coppie <entry><key/><value/></entry>. Gli oggetti annidati vengono espansi inline come elementi figli, allo stesso modo in cui il to_xml di Rails li gestisce.
Il mio codice viene salvato?
Il tuo codice viene mandato al backend per la conversione e non viene persistito — non logghiamo il payload. Come sempre con gli strumenti online, se il Ruby contiene letterali davvero sensibili (chiavi API, PII di clienti), puliscili prima di incollare.
E se il codice usa metaprogrammazione o define_method?
Tutto ciò che esiste solo a runtime (metodi aggiunti via define_method, attributi settati tramite method_missing, moduli mixati con attr calcolati) non può essere dedotto dal solo codice statico. Lo strumento legge attr_accessor, attr_reader, campi Struct e assegnazioni esplicite dichiarati. Se un campo appare solo tramite metaprogrammazione, dichiaralo come attr_accessor così il convertitore riesce a vederlo.
Altri strumenti che ti potrebbero servire
Ruby to XML è un pezzo del puzzle. Questi ci stanno bene insieme: