Plak Python links en klik "Converteren" — wij zetten het om naar XMLPlak Python-code

Wat deze tool doet

Als je ooit met de hand een XML-payload hebt moeten timmeren om een Python-class te spiegelen — voor een SOAP-endpoint, een config-bestand, een legacy-integratie of een test-fixture — ken je het ritueel al: een uur vechten met xml.etree.ElementTree en dan erachter komen dat je een nested veld was vergeten. Plak de Python hier in plaats daarvan en je krijgt in één keer goed opgemaakte XML terug. Een gewone dict, een dataclass, een Pydantic-model of iets diep geneste — zelfde resultaat.

Het is geen domme string-replace. De converter snapt hoe Python-waarden zich echt naar XML mappen: Decimal("49.99") wordt gewone numerieke tekst, datetime en date komen eruit als ISO-8601 strings, UUID wordt een standaard 8-4-4-4-12 hex-string, Optional[...]-velden met None worden lege elementen in plaats van te verdwijnen, en list[T] of List[T] worden container-elementen met één kind per item, vernoemd naar het item-type — precies de vorm die libraries als xmltodict of lxml zouden produceren.

Type hints worden ook gerespecteerd. @dataclass-veldnamen worden element-namen. Field(alias="x") op Pydantic-modellen hernoemt het element. field(metadata={"xml": "attribute"}) op een dataclass duwt de waarde naar een attribute in plaats van naar een kindelement. Private velden die met _ beginnen worden weggelaten. Als je meerdere classes plakt, landt elke class in de output met geneste types uitgevouwen en geërfde attributes inbegrepen. Niks wordt stilletjes weggeslikt — als een veld er staat, komt het in de XML terecht.

Hoe je het gebruikt

Drie stappen. Werkt hetzelfde of je nou een dict van vijf regels plakt of een hele models.py.

1

Plak je Python (of probeer het voorbeeld)

Gooi je Python zoals het is in de linker-editor. Een dict-literal, een dataclass, een Pydantic BaseModel, geneste classes of een instance-assignment — allemaal prima. Klik Load Sample als je eerst een realistisch Order / OrderItem / Address-voorbeeld wilt zien.

Laat imports, decorators en type hints staan. Je hoeft ze niet weg te halen — de parser leest typing-annotaties en gebruikt ze om de output-types te bepalen.

2

Klik Converteren

Klik de groene Convert-knop. De tool leest de Python, bewaart elke class en attribute en spuwt de XML in één keer uit. Tijdens het draaien zie je even een laad-indicator.

3

Kopieer de XML

Het rechter paneel vult zich met ingesprongen, goed opgemaakte XML die elke standaardconforme XML-parser accepteert. Plak het meteen in je SOAP-request, config-bestand, test-fixture of docs.

Wanneer dit echt van pas komt

SOAP- / legacy-integratie-fixtures

Je hebt een Pydantic request-model en je hebt een XML-body nodig voor een legacy SOAP-service. Model erin plakken, XML eruit, in je test runner plakken — klaar.

dataclasses omzetten naar config

Een Settings-dataclass met 30 velden wordt een kant-en-klare XML-config-template voor elke XML-gebaseerde settings-store — geen handgetikt steigerwerk, geen typefouten.

XSD-docs eerlijk houden

Genereer XML-samples voor je README, API-referentie of XSD-gedreven schemadocs rechtstreeks uit de echte modellen in je code, zodat de voorbeelden nooit losdrijven van de werkelijkheid.

Integratietests seeden

Zet instance-literals uit je pytest-fixtures om in XML-seed-bestanden voor systemen die nog steeds XML spreken — legacy-APIs, mock-servers of XSLT-pipelines.

Veelgestelde vragen

Werkt het met dataclasses, Pydantic en gewone dicts?

Ja, alle drie. De veldnamen van @dataclass en Pydantic BaseModel worden als element-namen gebruikt. Gewone dict-literals werken ook — de keys worden element-namen en de waarden worden per type uitgestuurd. Geneste modellen of dicts worden als geneste elementen uitgevouwen.

Hoe gaat het om met Decimal, datetime en UUID?

Decimal("49.99") wordt 49.99 als element-tekst. datetime, date en time komen eruit als ISO-8601-strings. UUID wordt een standaard 8-4-4-4-12 hex-string. Enum-subclasses sturen hun .value uit. sets worden container-elementen net als lists.

En Optional[...] en None-waarden?

Velden met None-waarde worden geschreven als lege elementen (<field/>) in plaats van weg te vallen — de output-vorm blijft consistent, wat uitmaakt als een downstream XSD vereist dat het element aanwezig is.

Kan ik elementen hernoemen of velden naar attributes duwen?

Ja. Op Pydantic-modellen hernoemt Field(alias="x") het element. Op dataclasses duwt field(metadata={"xml": "attribute"}) het veld naar een attribute op de parent, en metadata={"xml": "name", ...} hernoemt het. Private velden met een underscore ervoor (_cache, _tmp) worden standaard weggelaten.

Kan ik meerdere classes tegelijk plakken?

Ja — plak gerust een hele models.py. Elke top-level class komt eruit met geneste types uitgevouwen en geërfde velden van base classes inbegrepen. Als je ook een instance-assignment meestuurt, wordt die instance geserialiseerd; anders wordt de eerste class met oplosbare defaults gebruikt.

Wordt mijn code opgeslagen?

Je code gaat alleen naar de backend om te worden geconverteerd en wordt niet bewaard — we loggen de payload niet. Zoals bij elke online tool: als de code echt gevoelig is, lees het dan eerst door voor je plakt.

Andere tools die je misschien nodig hebt

Python naar XML is één stuk van de puzzel. Deze combineren er goed mee: