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

Hva verktøyet gjør

Hvis du noen gang har måttet snekre sammen en XML-payload for hånd for å speile en Python-klasse — til et SOAP-endpoint, en config-fil, en legacy-integrasjon eller en test-fixture — så kjenner du rutinen: krangler med xml.etree.ElementTree i en time, og så skjønner du at du glemte et nestet felt. Lim inn Python-koden her i stedet, og få tilbake velformet XML i én kjøring. En vanlig dict, en dataclass, en Pydantic-modell eller noe dypt nestet — samme resultat.

Det er ikke en dum string-replace. Konverteren skjønner hvordan Python-verdier faktisk mapper til XML: Decimal("49.99") blir ren numerisk tekst, datetime og date kommer ut som ISO-8601-strenger, UUID blir en standard 8-4-4-4-12-hex-streng, Optional[...]-felt med None-verdier blir tomme elementer i stedet for å droppes, og list[T] eller List[T] blir container-elementer med ett barn per item, navngitt etter item-typen — samme formen som biblioteker som xmltodict eller lxml ville produsert.

Type hints blir også respektert. @dataclass-feltnavn blir element-navn. Field(alias="x") på Pydantic-modeller gir elementet nytt navn. field(metadata={"xml": "attribute"}) på en dataclass sender verdien til en attributt i stedet for et barne-element. Private felt som starter med _ blir droppet. Limer du inn flere klasser, lander hver av dem i outputet med nestede typer pakket ut og arvede attributter med. Ingenting blir slukt i stillhet — er feltet der, dukker det opp i XML-en.

Slik bruker du det

Tre steg. Funker likt enten du limer inn en fem-linjers dict eller en hel models.py.

1

Lim inn Python-koden din (eller prøv eksemplet)

Slipp Python-koden rett inn i editoren til venstre. En dict-literal, en dataclass, en Pydantic BaseModel, nestede klasser eller en instans-tildeling — alt funker. Trykk Load Sample hvis du vil se et realistisk Order / OrderItem / Address-eksempel først.

La imports, decorators og type hints være i fred. Du trenger ikke å fjerne dem — parseren leser typing-annoteringer og bruker dem til å bestemme output-typer.

2

Trykk Convert

Klikk på den grønne Convert-knappen. Verktøyet leser Python-koden, tar vare på hver klasse og attributt, og sender ut XML-en i én kjøring. En kort loading-indikator vises mens det går.

3

Kopier XML-en

Panelet til høyre fylles med innrykket, velformet XML som hvilken som helst standardkonform XML-parser aksepterer. Kopier den rett inn i SOAP-requesten, config-filen, test-fixturen eller dokumentasjonen din.

Når dette faktisk redder dagen

Fixtures for SOAP / legacy-integrasjoner

Du har en Pydantic-requestmodell og trenger en XML-body å sende til en legacy SOAP-tjeneste. Lim inn modellen, ta XML-en, lim inn i test-runneren din — ferdig.

Gjøre dataclasses om til config

En Settings-dataclass med 30 felt blir til en klar-til-redigering XML-config-mal for et hvilket som helst XML-basert settings-store — ingen håndskrevet stillas, ingen skrivefeil.

Holde XSD-docs ærlige

Generer XML-eksempler til README-en, API-referansen eller XSD-baserte schema-docs rett fra de faktiske modellene i koden, så eksemplene aldri glir fra virkeligheten.

Seede integrasjonstester

Konverter instans-literals fra pytest-fixturene dine til XML-seed-filer for systemer som fortsatt snakker XML — legacy-API-er, mock-servere eller XSLT-pipelines.

Vanlige spørsmål

Funker det med dataclasses, Pydantic og vanlige dicts?

Ja, alle tre. Feltnavn fra @dataclass og Pydantic BaseModel brukes som element-navn. Vanlige dict-literals funker også — nøklene blir element-navn og verdiene sendes ut etter type. Nestede modeller eller dicts pakkes ut som nestede elementer.

Hvordan håndteres Decimal, datetime og UUID?

Decimal("49.99") blir til 49.99 som element-tekst. datetime, date og time kommer ut som ISO-8601-strenger. UUID blir en standard 8-4-4-4-12-hex-streng. Enum-underklasser sender ut .value. set blir container-elementer akkurat som lister.

Hva med Optional[...] og None-verdier?

Felt med None-verdi skrives som tomme elementer (<field/>) i stedet for å droppes — output-formen holder seg konsistent, noe som betyr en del hvis et nedstrøms XSD krever at elementet er til stede.

Kan jeg gi elementer nye navn eller skyve felt over til attributter?

Ja. På Pydantic-modeller gir Field(alias="x") elementet nytt navn. På dataclasses skyver field(metadata={"xml": "attribute"}) feltet over på en attributt på parent-en, og metadata={"xml": "name", ...} gir det nytt navn. Private felt med underscore foran (_cache, _tmp) droppes som standard.

Kan jeg lime inn flere klasser på én gang?

Ja — lim inn en hel models.py. Hver top-level-klasse kommer ut med nestede typer pakket ut og arvede felt fra basisklasser med. Legger du også ved en instans-tildeling, er det den instansen som serialiseres; ellers brukes den første klassen med defaults som lar seg løse opp.

Lagres koden min noe sted?

Koden sendes til backend bare for å bli konvertert og lagres ikke — vi logger ikke payloaden. Som med alle online-verktøy: er det du limer inn ordentlig sensitivt, les gjennom det først.

Andre verktøy du kan trenge

Python til XML er én brikke i puslespillet. Her er verktøyene som passer godt sammen med det: