Lim inn Perl til venstre og klikk "Konverter" — så gjør vi det om til XMLLim inn Perl-kode

Hva verktøyet gjør

Hvis du vedlikeholder Perl som dytter XML inn i noe — en gammel SOAP-tjeneste, en XML-basert konfig, en CPAN-drevet integrasjon — kjenner du rituelet: use XML::Simple, fikle med ForceArray og KeyAttr, håndrulle en hash-ref og krysse fingrene for at outputen er det forbrukeren forventer. Lim inn Perlen her og få velformet XML tilbake i ett jafs — et blessed-objekt, en vanlig hash-ref eller en hel pakke med konstruktør og accessors.

Konverteren leser de vanlige Perl OO-mønstrene rent. En konstruktør som gjør bless $self, $class med en hash-ref blir til et XML-element der barna speiler hash-nøklene. Array-refs blir container-elementer med ett barn per oppføring (barn-taggen er som standard entallsformen av nøkkelen, så items => [...] blir <items><item/>...</items>). Nestede hash-refs blir nestede elementer. undef blir et tomt element i stedet for å droppes, slik at formen matcher det XML::Simple eller XML::LibXML ville gitt i en round-trip.

Du kan lime inn flere package-blokker samtidig — package Order; package OrderItem; package Address; — og hver av dem kommer ut med sine konstruktør-tildelte felter utpakket. Flate, ikke-OO datastrukturer fungerer også: send inn my $data = { ... };, og verktøyet går gjennom refsene og beholder hash-nøklene som elementnavn. For de dypere Perl-reglene bak alt dette er offisielle perldoc referansen.

Slik bruker du det

Tre steg. Fungerer likt enten du limer inn en ti-linjers pakke eller en hel modul med hjelpefunksjoner.

1

Lim inn Perlen din (eller last inn eksemplet)

Slipp koden i venstre editor slik den er. En package med konstruktør, en vanlig hash-ref, nestede pakker eller en miks — alt er greit. Trykk Last inn eksempel for å se et realistisk tilfelle først.

Du trenger ikke fjerne use strict;, use warnings; eller require-listen din. La koden stå slik den ser ut i editoren. Bare lim inn.

2

Trykk Konverter

Klikk på den grønne Konverter-knappen. Verktøyet leser pakkeerklæringene, løser de blessed referansene og bygger XML i ett jafs. En kort lasteindikator snurrer mens det jobber.

3

Kopier XML-en

Høyre panel fylles med innrykket, velformet XML som enhver standardkompatibel parser vil godta. Kopier den rett inn i CPAN-flyten din, en legacy SOAP-integrasjon, en XML-basert konfigfil eller en test-fixture.

Når dette faktisk kommer godt med

Mate XML::LibXML eller XML::Simple

Du har en Perl-datastruktur og vil se nøyaktig hvordan den ser ut som XML før du kobler opp <code>XMLout</code> / <code>XML::LibXML::Document</code>. Lim inn, konverter, kopier, sammenlign.

Integrasjon mot legacy-systemer

En CPAN-basert integrasjon forventer fortsatt SOAP 1.1 eller et tilpasset XML-format. Lim inn din Perl-representasjon og få en realistisk body du kan sende til SoapUI eller curl.

Bort fra Perl

Erstatter du en gammel Perl-tjeneste med noe annet? Eksporter dataformen som XML først — det er det nøytrale underlaget for porting til Python, Java eller C#.

Docs som matcher koden

Generer XML-eksempler til README-en for en <a href="https://metacpan.org/" target="_blank" rel="noopener">MetaCPAN</a>-modul eller en intern wiki rett fra de faktiske pakkene dine, så dokumentasjonen ikke glir fra koden.

Vanlige spørsmål

Kan jeg lime inn flere pakker samtidig?

Ja — lim inn en hel .pm-fil eller flere package-blokker stablet oppå hverandre. Hver pakke kommer ut med sine konstruktør-tildelte hash-nøkler utpakket og nestede objektreferanser løst. Hvis Order holder en array-ref av OrderItem-objekter og en shipping_address-hash-ref, lander alle tre i outputen.

Hvordan håndteres undef og manglende nøkler?

En nøkkel med verdien undef blir et tomt element, slik at XML-formen er stabil på tvers av instanser. Nøkler som helt mangler i hashen, blir utelatt. Array-refs med tomme arrays blir tomme container-elementer (<items></items>) i stedet for å droppes.

Fungerer array-refs og hash-refs likt?

En array-ref blir et container-element med ett barn per oppføring — standard barn-tagg er entallsformen av nøkkelen (så items => [...] gir <items><item/>...</items>). En hash-ref blir et nestet element der barna speiler nøklene. Blandede refs (array av hash-refs, hash av arrays) nestes likt rekursivt.

Hva med blessed referanser og multippel arv?

Blessed referanser beholder klassenavnet tilgjengelig — det kan brukes som element-tagg når det gir mening. Ved multippel arv via @ISA eller Moose/Moo-roller kommer attributtene på det ferdig sammensatte objektet gjennom; vi prøver ikke å rekonstruere arvegrafen i XML.

Lagres koden min?

Koden sendes til backend for konvertering og lagres ikke — vi logger ikke payloaden. Hvis Perlen er sensitiv (credentials i literaler, interne URL-er), kast et raskt blikk på den før du limer inn, akkurat som med ethvert annet nettverktøy.

Hva om Perlen bruker subrutine-refs eller tie?

Kode-refs og tied variabler sendes ut som tomme elementer i stedet for at hele konverteringen ryker. Datadelen av strukturen din kommer fortsatt gjennom. Har selve koden syntaksfeil, fikser du de opplagte først så parseren har noe rent å jobbe med.

Andre verktøy du kan trenge

Perl til XML er én brikke i puslespillet. Disse verktøyene passer godt ved siden av: