Plak links Ruby en klik op "Converteren" — wij maken er XML vanPlak Ruby-code

Wat deze tool doet

Als je ooit een XML-payload handmatig in elkaar hebt moeten zetten om te matchen met een Ruby-class — misschien voor een Rails to_xml-fixture, een oude SOAP-call of een Nokogiri Builder-template — dan weet je hoe snel het boilerplate zich opstapelt. Plak hier Ruby en de tool geeft je in één pass keurig XML terug. Eén attr_accessor-class, een Struct.new, een compleet modellenbestand of diep geneste objecten — zelfde resultaat: een compleet XML-document met elk veld behouden.

Het is niet zomaar string-vervanging. De converter begrijpt hoe Ruby-waarden echt serialiseren: BigDecimal("49.99") komt eruit als een gewone numerieke string (geen wetenschappelijke notatie), Time en DateTime worden gerenderd als ISO-8601-strings, Symbol-waarden verliezen de leidende dubbele punt, nil wordt een leeg element in plaats van te verdwijnen, en arrays worden container-elementen met één kind per item — precies wat Nokogiri::XML::Builder en Rails to_xml doorgaans produceren.

Classe-structuur wordt ook gerespecteerd. Elke top-level class wordt een root-element vernoemd naar de class (in snake_case), attr_accessor-symbolen worden kind-elementen, geneste objecten worden inline uitgeklapt, en arrays van OrderItem worden een <items>-wrapper met één <order_item>-kind per item. Hashes worden key/value-kindelementen. Overgeërfde attributen komen ook mee. Als je een Rails-model of een gewoon PORO plakt, ziet het resultaat eruit zoals render xml: of REXML::Document.new (zie REXML) het je zouden geven — zonder alle ceremonie.

Hoe je het gebruikt

Drie stappen. Zelfde flow of je nu één Struct plakt of een hele lib-folder.

1

Plak je Ruby (of probeer het voorbeeld)

Gooi je Ruby gewoon in de linker editor. Een attr_accessor-class, een Struct.new-shortcut, meerdere classes, of een ingevulde instance — allemaal prima. Klik op Voorbeeld laden om eerst een realistisch Order-voorbeeld te zien.

Je hoeft geen require-regels weg te halen, modules eruit te knippen of de syntax te vereenvoudigen. Laat de code staan zoals-ie in je editor staat. Gewoon plakken.

2

Druk op Converteren

Klik op de groene Converteren-knop. De tool leest het Ruby, houdt elke class en elk attribuut, en bouwt de XML in één pass. Tijdens het draaien zie je een korte shimmer.

3

Kopieer de XML

Het rechterpaneel vult zich met ingesprongen, welgevormde XML die elke standaardcompatibele parser accepteert. Zet het in een SOAP-request, een fixture-bestand voor RSpec, een Rails-integratietest of je API-docs.

Wanneer dit echt handig is

Nokogiri- of Builder-fixtures maken

Je hebt een Ruby-class en je hebt een XML-template nodig voor Nokogiri::XML::Builder of een ERB-template. Plak de class, pak de XML, plak die in je Builder-block — klaar.

Rails to_xml-seeddata

Een ActiveRecord-model of PORO met 20 attributen wordt een direct te bewerken XML-seedbestand voor je integratietests of voor een extern systeem dat nog XML wil.

Legacy SOAP-integraties

Een Ruby-client die praat met een oude SOAP/XML-RPC-service heeft een request body nodig die matcht met een Ruby-class. Plak het model, pak de vorm van de XML-envelope, en stop met worstelen met <a href="https://www.ruby-doc.org/" target="_blank" rel="noopener">Savon</a>-templates.

Docs en code in sync houden

Genereer XML-responsevoorbeelden voor een README, API-referentie of XSD-gebaseerde documentatie rechtstreeks uit de echte Ruby-modellen, zodat de docs nooit afdwalen van de code.

Veelgestelde vragen

Kan ik meerdere classes tegelijk plakken?

Ja — plak gerust een hele lib-file. Elke top-level class komt eruit met geneste classes uitgeklapt en superclass-attributen meegenomen. Mixins worden behandeld alsof ze hun attr_accessors bijdragen. Er verdwijnt niks stilletjes.

Werkt Struct.new-shorthand?

Ja. Order = Struct.new(:order_id, :customer_name, :total_amount) wordt hetzelfde behandeld als een class met bijpassende attr_accessors. Keyword-style structs (Struct.new(:a, keyword_init: true)) werken ook — het resulterende XML is in beide gevallen identiek.

Hoe worden BigDecimal, Time, Symbol en nil afgehandeld?

BigDecimal("49.99") wordt gewoon de string 49.99 (geen wetenschappelijke notatie, geen bd-suffix). Time, DateTime en Date worden gerenderd als ISO-8601-strings. Symbol-waarden verliezen de dubbele punt en worden gewone tekst. nil wordt een leeg element (<field/>) in plaats van weggelaten, zodat de XML-vorm consistent blijft.

En arrays, hashes en geneste objecten?

Arrays worden container-elementen — items = [OrderItem.new, OrderItem.new] wordt <items><order_item/><order_item/></items>, één kind per item, vernoemd naar de element-class. Hashes worden <entry><key/><value/></entry>-paren. Geneste objecten worden inline uitgeklapt als kindelementen, zoals Rails to_xml dat doet.

Wordt mijn code opgeslagen?

Je code gaat naar de backend voor conversie en wordt niet bewaard — we loggen de payload niet. Zoals altijd met online tools: als het Ruby echt gevoelige literals bevat (API-keys, klant-PII), haal die er eerst uit voordat je plakt.

Wat als de code metaprogramming of define_method gebruikt?

Alles wat alleen at runtime bestaat (methoden toegevoegd via define_method, attributen gezet via method_missing, ingemixte modules met berekende attrs) is niet uit statische code af te leiden. De tool leest wat er aan attr_accessor, attr_reader, Struct-velden en expliciete toewijzingen staat. Als een veld alleen via metaprogramming opduikt, zet het er dan als attr_accessor bij zodat de converter het kan zien.

Andere tools die je misschien nodig hebt

Ruby naar XML is één stukje van de puzzel. Deze combineren er goed mee: