Klistra in Perl till vänster och klicka på "Konvertera" — vi gör det till XMLKlistra in Perl-kod

Vad verktyget gör

Om du underhåller Perl som matar XML någonstans — en gammal SOAP-tjänst, en XML-baserad config, en CPAN-driven integration — känner du till ritualen: use XML::Simple, peta med ForceArray och KeyAttr, handskriva en hash-ref och hoppas att utdatan är vad konsumenten väntar sig. Klistra in Perl här och få tillbaka välformad XML i en svep — ett blessed-objekt, en vanlig hash-ref eller ett helt paket med konstruktor och accessorer.

Konverteraren läser de vanliga OO-mönstren i Perl rent. En konstruktor som gör bless $self, $class med en hash-ref blir ett XML-element vars barn speglar hash-nycklarna. Array-refs blir container-element med ett barn per post (barn-taggen är som standard nyckelns singularform, så items => [...] blir <items><item/>...</items>). Nästade hash-refs blir nästade element. undef blir ett tomt element istället för att tappas bort, så formen matchar det XML::Simple eller XML::LibXML skulle ge i en round-trip.

Du kan klistra in flera package-block på en gång — package Order; package OrderItem; package Address; — och var och ett kommer ut med sina konstruktortilldelade fält uppfällda. Platta datastrukturer som inte är OO fungerar också: mata in my $data = { ... }; och verktyget går igenom refsen, och behåller hash-nycklarna som elementnamn. För de djupare Perl-reglerna bakom allt detta är officiella perldoc referensen.

Så använder du det

Tre steg. Fungerar likadant om du klistrar in ett tioradspaket eller en hel modul med hjälpfunktioner.

1

Klistra in din Perl (eller ladda exemplet)

Släpp in koden i vänstra editorn som den är. Ett package med konstruktor, en vanlig hash-ref, nästade paket eller en blandning — allt går bra. Tryck på Ladda exempel för att först se ett realistiskt exempel.

Du behöver inte plocka bort use strict;, use warnings; eller din require-lista. Lämna koden som den ser ut i din editor. Bara klistra in.

2

Klicka på Konvertera

Klicka på den gröna Konvertera-knappen. Verktyget läser paketdeklarationerna, löser upp de blessed referenserna och bygger XML i en svep. En kort laddningsindikator snurrar medan det jobbar.

3

Kopiera XML:en

Panelen till höger fylls med indenterad, välformad XML som alla standardkompatibla parsrar accepterar. Kopiera den rakt in i ditt CPAN-flöde, en legacy SOAP-integration, en XML-baserad config-fil eller en testfixtur.

När det faktiskt kommer väl till pass

Mata XML::LibXML eller XML::Simple

Du har en Perl-datastruktur och vill se exakt hur den ser ut som XML innan du drar kabel till <code>XMLout</code> / <code>XML::LibXML::Document</code>. Klistra in, konvertera, kopiera, jämför.

Integration med legacy-system

En CPAN-baserad integration väntar sig fortfarande SOAP 1.1 eller ett eget XML-format. Klistra in din Perl-representation och få en realistisk body att skicka till SoapUI eller curl.

Flytta bort från Perl

Byter du ut en gammal Perl-tjänst mot något annat? Exportera dataformen som XML först — det är den neutrala marken för att porta till Python, Java eller C#.

Docs som följer koden

Generera XML-exempel till README för en <a href="https://metacpan.org/" target="_blank" rel="noopener">MetaCPAN</a>-modul eller en intern wiki direkt ur dina verkliga paket, så att dokumentationen inte glider isär.

Vanliga frågor

Kan jag klistra in flera paket på en gång?

Ja — klistra in en hel .pm-fil eller flera package-block staplade. Varje paket kommer ut med sina konstruktortilldelade hash-nycklar uppfällda och nästade objektreferenser upplösta. Om Order håller en array-ref av OrderItem-objekt och en shipping_address-hash-ref, hamnar alla tre i utdatan.

Hur hanteras undef och saknade nycklar?

En nyckel vars värde är undef blir ett tomt element så att XML-formen är stabil mellan instanser. Nycklar som helt saknas i hashen utelämnas. Array-refs med tomma arrays blir tomma container-element (<items></items>) istället för att tappas.

Fungerar array-refs och hash-refs på samma sätt?

En array-ref blir ett container-element med ett barn per post — som standard är barn-taggen nyckelns singularform (så items => [...] ger <items><item/>...</items>). En hash-ref blir ett nästat element vars barn speglar nycklarna. Blandade refs (array av hash-refs, hash av arrays) nästlar likadant rekursivt.

Hur är det med blessed references och multipelt arv?

Blessed references behåller sitt klassnamn tillgängligt — det kan användas som element-tag när det är meningsfullt. Vid multipelt arv via @ISA eller Moose/Moo-roller kommer attributen från det slutliga sammansatta objektet igenom; vi försöker inte rekonstruera arvsgrafen i XML.

Lagras min kod?

Koden skickas till backend för konvertering och persisteras inte — vi loggar inte payloaden. Om Perl-koden är känslig (credentials i literaler, interna URL:er), gå snabbt igenom den innan du klistrar in, som med vilket onlineverktyg som helst.

Vad händer om Perl använder subrutin-refs eller tie?

Kod-refs och tied variabler skickas ut som tomma element istället för att få hela konverteringen att falla. Datadelen av din struktur kommer igenom som vanligt. Om själva koden har syntaxfel, fixa de uppenbara först så att parsern har något rent att jobba med.

Andra verktyg du kan behöva

Perl till XML är en pusselbit. De här verktygen passar bra bredvid: