Indsæt Python til venstre og klik på "Konverter" — vi laver det om til XMLIndsæt Python-kode

Hvad værktøjet gør

Hvis du nogensinde har skullet tømre en XML-payload sammen i hånden, så den afspejlede en Python-klasse — til et SOAP-endpoint, en config-fil, en legacy-integration eller en test-fixture — kender du rutinen: slås en time med xml.etree.ElementTree og så opdage at du glemte et nestet felt. Indsæt Pythonen her i stedet og få velformet XML tilbage i ét hug. En almindelig dict, en dataclass, en Pydantic-model eller noget dybt nestet — samme resultat.

Det er ikke et tumpet string-replace. Konverteren forstår hvordan Python-værdier faktisk mapper til XML: Decimal("49.99") bliver til ren numerisk tekst, datetime og date kommer ud som ISO-8601-strenge, UUID bliver en standard 8-4-4-4-12-hex-streng, Optional[...]-felter med None-værdier bliver til tomme elementer i stedet for at blive droppet, og list[T] eller List[T] bliver til container-elementer med ét barn pr. item, navngivet efter item-typen — præcis den form biblioteker som xmltodict eller lxml ville levere.

Type hints bliver også respekteret. @dataclass-feltnavne bliver til element-navne. Field(alias="x") på Pydantic-modeller omdøber elementet. field(metadata={"xml": "attribute"}) på en dataclass skubber værdien over på en attribut i stedet for et barn-element. Private felter der starter med _ bliver droppet. Indsætter du flere klasser lander hver af dem i outputtet med nestede typer foldet ud og arvede attributter taget med. Intet bliver slugt i stilhed — er feltet der, dukker det op i XML'en.

Sådan bruger du det

Tre trin. Virker ens uanset om du indsætter en fem-linjers dict eller en hel models.py.

1

Indsæt din Python (eller prøv eksemplet)

Smid Pythonen i venstre editor som den er. En dict-literal, en dataclass, en Pydantic BaseModel, nestede klasser eller en instans-tildeling — det virker hele vejen. Tryk på Load Sample hvis du vil se et realistisk Order / OrderItem / Address-eksempel først.

Lad imports, decorators og type hints være. Du behøver ikke fjerne dem — parseren læser typing-annoteringer og bruger dem til at bestemme output-typer.

2

Tryk på Convert

Klik på den grønne Convert-knap. Værktøjet læser Pythonen, bevarer hver klasse og attribut og sender XML'en ud i ét hug. En kort loading-indikator vises mens det kører.

3

Kopier XML'en

Højre panel fyldes med indrykket, velformet XML som enhver standardkonform XML-parser accepterer. Kopier den direkte ind i din SOAP-request, din config-fil, din test-fixture eller dine docs.

Hvornår det faktisk redder dagen

Fixtures til SOAP- / legacy-integrationer

Du har en Pydantic request-model og mangler en XML-body at sende til en legacy SOAP-tjeneste. Indsæt modellen, tag XML'en, indsæt i din test runner — færdig.

Lave dataclasses om til config

En Settings-dataclass med 30 felter bliver til en klar-til-redigering XML-config-skabelon til ethvert XML-baseret settings-store — ingen håndskrevet stillads, ingen tastefejl.

Holde XSD-docs ærlige

Generer XML-eksempler til dit README, din API-reference eller XSD-funderet schema-dokumentation direkte fra de faktiske modeller i koden, så eksemplerne aldrig driver væk fra virkeligheden.

Seede integrationstests

Konverter instans-literals fra dine pytest-fixtures til XML-seed-filer til systemer der stadig taler XML — legacy-API'er, mock-servere eller XSLT-pipelines.

Typiske spørgsmål

Virker det med dataclasses, Pydantic og almindelige dicts?

Ja, alle tre. Feltnavne fra @dataclass og Pydantic BaseModel bruges som element-navne. Almindelige dict-literals virker også — nøglerne bliver element-navne og værdierne sendes ud efter type. Nestede modeller eller dicts foldes ud som nestede elementer.

Hvordan håndteres Decimal, datetime og UUID?

Decimal("49.99") bliver til 49.99 som element-tekst. datetime, date og time kommer ud som ISO-8601-strenge. UUID bliver til en standard 8-4-4-4-12-hex-streng. Enum-underklasser sender deres .value ud. sets bliver til container-elementer ligesom lister.

Hvad med Optional[...] og None-værdier?

Felter med None-værdi skrives som tomme elementer (<field/>) i stedet for at blive droppet — output-formen forbliver konsistent, hvilket betyder noget hvis et nedstrøms XSD kræver at elementet er til stede.

Kan jeg omdøbe elementer eller skubbe felter over på attributter?

Ja. På Pydantic-modeller omdøber Field(alias="x") elementet. På dataclasses skubber field(metadata={"xml": "attribute"}) feltet over på en attribut på parent'en, og metadata={"xml": "name", ...} omdøber det. Private felter med underscore i starten (_cache, _tmp) droppes som standard.

Kan jeg indsætte flere klasser på én gang?

Ja — indsæt en hel models.py. Hver top-level-klasse kommer ud med nestede typer foldet ud og arvede felter fra basis-klasser taget med. Inkluderer du også en instans-tildeling, er det den instans der serialiseres; ellers bruges den første klasse med defaults der kan løses op.

Bliver min kode gemt nogen steder?

Koden sendes kun til backend for at blive konverteret og bliver ikke gemt — vi logger ikke payloaden. Som med alle online-værktøjer: er det du indsætter virkelig følsomt, så kig det igennem først.

Andre værktøjer du måske får brug for

Python til XML er ét stykke af puslespillet. Her er værktøjerne som spiller godt sammen med det: