Java naar XML Converter
Plak Java-classes of POJO's. Je krijgt nette XML terug.
Wat deze tool doet
Als je ooit met de hand een XML-payload hebt moeten bouwen die matcht met een Java-class — voor een SOAP-client, een Spring-config, een legacy banking-integratie of een JUnit-fixture — weet je al hoe vervelend dat is. Plak hier Java in en je krijgt in één keer welgevormde XML terug. Een enkele POJO, een bestand met Lombok-geannoteerde DTO's of een diep geneste model met meerdere classes — zelfde resultaat: een compleet XML-document met elk veld behouden.
Het is geen blinde templating. De converter weet hoe Java naar XML serialiseert: BigDecimal houdt zijn exacte precisie (geen wetenschappelijke notatie), LocalDate en LocalDateTime komen eruit als ISO-8601, UUID wordt een standaard 8-4-4-4-12 hex string, Instant is een timestamp met Z-suffix, en boxed primitives met null-waarden worden lege elementen. List<T> wordt een container-element — standaard gewrapped, met één child per item — precies zoals Jakarta XML Binding (JAXB) het zou produceren.
Annotations worden precies zo gerespecteerd als Eclipse JAXB RI ermee omgaat. @XmlRootElement(name="...") hernoemt de root, @XmlElement(name="...") hernoemt een child, @XmlAttribute stuurt het veld als attribuut op de parent, @XmlTransient gooit het helemaal weg, en @XmlElementWrapper zet de buitenste container om een collectie. Lombok @Data werkt ook — de gegenereerde getters en setters worden als bean-properties behandeld. Geef je de voorkeur aan de Jackson XML-module? Dan worden @JacksonXmlProperty en @JacksonXmlElementWrapper net zo goed gehonoreerd. Geneste classes, geërfde velden en meerdere top-level classes komen allemaal netjes door.
Hoe je het gebruikt
Drie stappen. Werkt hetzelfde of je nu één POJO plakt of een bestand met een dozijn classes.
Plak je Java (of probeer het voorbeeld)
Gooi je Java in de linker editor zoals hij is. Een gewone POJO, een @Data Lombok-class, een JAXB-geannoteerde DTO of een bestand met meerdere classes — allemaal prima. Klik op Load Sample om eerst een realistisch voorbeeld te zien.
Je hoeft de imports niet weg te halen, annotations niet te verwijderen en het bestand niet op te schonen. Plak het zoals het in je IDE staat — commentaar, package-statement en al.
Klik op Convert
Klik op de groene Convert-knop. De tool leest de Java, behoudt elk veld en elke class, honoreert de annotations en bouwt de XML in één pass. Tijdens het draaien zie je kort een loading-indicator.
Kopieer de XML
Het rechter paneel vult zich met ingesprongen, welgevormde XML die elke standaard-compliant XML parser accepteert. Kopieer het in je SOAP-envelope, Spring Boot-config, integratietest of XSD-gebaseerd schema-voorbeeld.
Wanneer dit echt handig is
SOAP-fixtures bouwen
Je hebt een JAX-WS- of Apache CXF request-DTO en je hebt een XML-body nodig voor SoapUI of Postman. Plak de class, krijg de envelope-klare XML, en ga verder met je dag.
Spring Boot XML-configs
Een Spring @ConfigurationProperties-class met 30 velden wordt een kant-en-klare XML-template om te editen — geen applicationContext.xml-boilerplate meer met de hand schrijven.
Docs en code synchroon houden
Genereer XML-voorbeelden voor een README, een interne wiki of XSD-gebaseerde schema-docs direct vanuit je echte entity-classes, zodat de voorbeelden nooit uit de pas lopen met de code.
Seeden van legacy integratietests
Maak van je JUnit object-mothers XML-seed-bestanden voor mock servers, IBM MQ-fixtures of legacy enterprise-systemen die nog steeds XML spreken.
Veelgestelde vragen
Kan ik meerdere classes tegelijk plakken?
Ja — plak een heel bestand. Elke top-level class komt door met geneste types uitgevouwen en overgeërfde velden uit superclasses meegenomen. Classes waar de root niet naar verwijst worden als losse XML-fragments uitgestuurd, zodat er niks stilletjes wegvalt.
Respecteert het JAXB-annotations zoals @XmlRootElement, @XmlElement, @XmlAttribute en @XmlTransient?
Ja. @XmlRootElement(name="x") hernoemt de root, @XmlElement(name="x") hernoemt een child, @XmlAttribute(name="x") stuurt het veld als attribuut op de parent, @XmlTransient gooit het weg, en @XmlElementWrapper zet de buitenste container om een collectie. Dit komt overeen met het gedrag dat wordt beschreven in de JAXB-tutorial.
En Lombok en Jackson XML?
Lombok @Data, @Getter en @Setter worden behandeld alsof de accessors met de hand geschreven zijn. Jackson XML-annotations — @JacksonXmlProperty, @JacksonXmlRootElement, @JacksonXmlElementWrapper, @JacksonXmlText — worden ook gehonoreerd, dus classes die gebouwd zijn voor de XmlMapper van Jackson dataformats-text komen correct door.
Hoe wordt omgegaan met BigDecimal, LocalDate, UUID en null-velden?
BigDecimal houdt volledige precisie, geen wetenschappelijke notatie. LocalDate, LocalDateTime en ZonedDateTime komen eruit als ISO-8601-strings. Instant krijgt een Z-suffix. UUID is de standaard 8-4-4-4-12 hex in kleine letters. Optional.empty() en boxed primitives met null worden lege elementen in plaats van weggegooid te worden, zodat de vorm van de XML consistent blijft tussen instances.
Wordt mijn code opgeslagen?
De code gaat naar de backend om geconverteerd te worden en wordt niet bewaard — we loggen het payload niet. Zelfde kanttekening als bij elke online tool: als de code echt gevoelig is, loop hem even na voordat je plakt.
En als de class iets ongebruikelijks heeft — Streams, CompletableFuture of een transient-veld?
Velden met transient of met @XmlTransient / @JsonIgnore worden overgeslagen. Types die geen directe mapping hebben in XML-land (Streams, CompletableFuture, eigen functional interfaces) komen eruit als lege elementen in plaats van de hele conversie om zeep te helpen. Als het Java zelf een compile-error heeft, fix eerst de voor de hand liggende — de parser is vergevend maar geen volledige javac.
Andere tools die je misschien nodig hebt
Java naar XML is maar één stukje van de puzzel. Deze tools passen er goed bij: