Ruby till XML-konverterare
Klistra in Ruby-klasser eller -objekt. Få ren XML tillbaka.
Vad verktyget gör
Om du någon gång har fått snickra ihop en XML-payload för hand för att passa en Ruby-klass — kanske för en Rails-to_xml-fixture, ett gammalt SOAP-anrop eller en Nokogiri Builder-mall — vet du hur snabbt boilerplate-koden växer. Klistra in Ruby här och verktyget ger dig välformad XML i ett svep. En attr_accessor-klass, en Struct.new, en hel modellfil eller djupt nästlade objekt — samma resultat: ett komplett XML-dokument med varje fält bevarat.
Det är inte bara sträng-ersättning. Konverteraren förstår hur Ruby-värden faktiskt serialiseras: BigDecimal("49.99") kommer ut som en vanlig numerisk sträng (ingen vetenskaplig notation), Time och DateTime renderas som ISO-8601-strängar, Symbol-värden tappar inledande kolonet, nil blir ett tomt element istället för att försvinna, och arrayer blir container-element med ett barn per post — precis det som Nokogiri::XML::Builder och Rails to_xml brukar producera.
Klasstrukturen respekteras också. Varje topp-nivå-klass blir ett rot-element uppkallat efter klassen (i snake_case), attr_accessor-symboler blir barn-element, nästlade objekt viks ut inline, och arrayer av OrderItem förvandlas till en <items>-omslagare med ett <order_item>-barn per post. Hashar blir nyckel/värde-barnelement. Ärvda attribut följer med. Om du klistrar in en Rails-modell eller ett vanligt PORO ser resultatet ut som det render xml: eller REXML::Document.new (se REXML) skulle ge dig — bara utan allt krångel.
Så använder du det
Tre steg. Samma flöde vare sig du klistrar in en enda Struct eller en hel lib-mapp.
Klistra in din Ruby (eller testa exemplet)
Släpp din Ruby som den är i den vänstra editorn. En attr_accessor-klass, en Struct.new-förkortning, flera klasser, eller en ifylld instans — allt funkar. Klicka på Ladda exempel för att först se ett realistiskt Order-exempel.
Du behöver inte ta bort require-rader, skala av moduler eller förenkla syntaxen. Låt koden vara som den ser ut i din editor. Klistra bara in.
Tryck på Konvertera
Klicka på den gröna Konvertera-knappen. Verktyget läser Ruby-koden, behåller varje klass och attribut, och bygger XML:en i ett svep. Ett kort skimmer syns medan det arbetar.
Kopiera XML:en
Höger panel fylls med indenterad, välformad XML som alla standard-kompatibla parsers accepterar. Släng in den i en SOAP-begäran, en fixture-fil för RSpec, ett Rails-integrationstest eller din API-dokumentation.
När det faktiskt kommer till nytta
Bygga Nokogiri- eller Builder-fixtures
Du har en Ruby-klass och behöver en XML-mall för Nokogiri::XML::Builder eller en ERB-mall. Klistra in klassen, ta XML:en, klistra in den i ditt Builder-block — klart.
Rails to_xml-seed-data
En ActiveRecord-modell eller PORO med 20 attribut blir en redigeringsklar XML-seed-fil för dina integrationstester eller ett externt system som fortfarande käkar XML.
Legacy SOAP-integrationer
En Ruby-klient som pratar med en gammal SOAP/XML-RPC-tjänst behöver en request body som matchar en Ruby-klass. Klistra in modellen, få formen på XML-enveloppen och sluta slåss med <a href="https://www.ruby-doc.org/" target="_blank" rel="noopener">Savon</a>-mallar.
Hålla dokumentation och kod i synk
Generera XML-responseexempel för en README, API-referens eller XSD-baserad dokumentation direkt från de riktiga Ruby-modellerna, så att dokumentationen aldrig glider iväg från koden.
Vanliga frågor
Kan jag klistra in flera klasser samtidigt?
Ja — klistra in en hel lib-fil. Varje topp-nivå-klass kommer ut med nästlade klasser utvikta och superklass-attribut inbakade. Mixins behandlas som att de bidrar med sina attr_accessor. Inget tappas bort i tysthet.
Fungerar Struct.new-förkortningen?
Ja. Order = Struct.new(:order_id, :customer_name, :total_amount) behandlas som en klass med motsvarande attr_accessor. Keyword-strukturer (Struct.new(:a, keyword_init: true)) fungerar också — resulterande XML är identisk i båda fallen.
Hur hanteras BigDecimal, Time, Symbol och nil?
BigDecimal("49.99") blir strängen 49.99 (ingen vetenskaplig notation, inget efterhängande bd-märke). Time, DateTime och Date renderas som ISO-8601-strängar. Symbol-värden tappar kolonet och blir vanlig text. nil blir ett tomt element (<field/>) istället för att försvinna, så XML-formen förblir konsekvent.
Och arrayer, hashar och nästlade objekt?
Arrayer blir container-element — items = [OrderItem.new, OrderItem.new] blir <items><order_item/><order_item/></items>, ett barn per post, uppkallat efter element-klassen. Hashar blir <entry><key/><value/></entry>-par. Nästlade objekt viks ut inline som barn-element, precis som Rails to_xml gör.
Sparas min kod?
Din kod skickas till backend för konvertering och sparas inte — vi loggar inte payloaden. Som alltid med online-verktyg: om Ruby-koden innehåller riktigt känsliga literaler (API-nycklar, kund-PII), rensa dem innan du klistrar in.
Vad händer om koden använder metaprogrammering eller define_method?
Allt som bara finns vid körning (metoder tillagda via define_method, attribut satta via method_missing, inmixade moduler med beräknade attr) kan inte härledas från enbart statisk kod. Verktyget läser deklarerade attr_accessor, attr_reader, Struct-fält och explicita tilldelningar. Om ett fält bara dyker upp via metaprogrammering, lista det som en attr_accessor så att konverteraren kan se det.
Andra verktyg du kan behöva
Ruby till XML är en pusselbit. De här matchar bra ihop med det: