Indsæt Java til venstre og klik "Convert" — så laver vi det om til XMLIndsæt Java-kode

Hvad værktøjet gør

Hvis du nogensinde har skullet skrive et XML-payload i hånden der matcher en Java-klasse — til en SOAP-klient, en Spring-config, en legacy banking-integration eller en JUnit-fixture — så ved du allerede hvor trættende det er. Indsæt Java-en her, og du får velformet XML tilbage på én gang. En enkelt POJO, en fil med Lombok-annoterede DTOs eller en dybt nested model med flere klasser — samme resultat: et komplet XML-dokument med hvert felt bevaret.

Det er ikke blind templating. Converteren ved, hvordan Java serialiseres til XML: BigDecimal bevarer sin præcise præcision (ingen scientific notation), LocalDate og LocalDateTime kommer ud som ISO-8601, UUID bliver en standard 8-4-4-4-12 hex-string, Instant er en Z-suffikset timestamp, og boxed primitives med null-værdier bliver tomme elementer. List<T> bliver et container-element — som standard wrappet, med ét child per item — præcis det Jakarta XML Binding (JAXB) ville producere.

Annotations respekteres præcis sådan som Eclipse JAXB RI håndterer dem. @XmlRootElement(name="...") omdøber roden, @XmlElement(name="...") omdøber et child, @XmlAttribute sender feltet ud som attribut på parenten, @XmlTransient dropper det helt, og @XmlElementWrapper lægger den ydre container om en collection. Lombok @Data virker også — de genererede getters og setters behandles som bean-properties. Foretrækker du Jackson XML-modulet? Så respekteres dens @JacksonXmlProperty og @JacksonXmlElementWrapper på samme måde. Nested classes, nedarvede felter og flere top-level-klasser kommer alle rent igennem.

Sådan bruger du det

Tre trin. Virker ens uanset om du indsætter en enkelt POJO eller en fil med et dusin klasser.

1

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

Smid din Java ind i editoren til venstre som den er. En almindelig POJO, en @Data Lombok-klasse, en JAXB-annoteret DTO eller en fil med flere klasser — det hele virker. Klik Load Sample hvis du først vil se et realistisk eksempel.

Du behøver ikke fjerne imports, tage annotations ud eller rydde op i filen. Indsæt den som den er i din IDE — kommentarer, package-statement og det hele.

2

Tryk Convert

Klik på den grønne Convert-knap. Værktøjet læser Java-en, bevarer hvert felt og hver klasse, respekterer annotations og bygger XML-en i ét pass. Mens det kører, ser du kort en loading-indikator.

3

Kopier XML'en

Højre panel fyldes med indrykket, velformet XML som enhver standard-kompatibel XML-parser vil acceptere. Kopier det ind i din SOAP-envelope, Spring Boot-config, integrationstest eller XSD-baseret schema-eksempel.

Hvornår det faktisk er rart at have

Bygge SOAP-fixtures

Du har en JAX-WS- eller Apache CXF-request-DTO og skal bruge en XML-body til SoapUI eller Postman. Indsæt klassen, få envelope-klar XML, og kom videre med din dag.

Spring Boot XML-configs

En Spring @ConfigurationProperties-klasse med 30 felter bliver til en redigerbar XML-template — slip for at skrive applicationContext.xml-boilerplate i hånden.

Holde dokumentation og kode i sync

Generer XML-eksempler til en README, en intern wiki eller XSD-baserede schema-docs direkte ud fra dine rigtige entity-klasser, så eksemplerne aldrig driver væk fra koden.

Seed til legacy-integrationstest

Lav dine JUnit-object-mothers om til XML-seed-filer til mock-servere, IBM MQ-fixtures eller legacy-enterprise-systemer, der stadig snakker XML.

Typiske spørgsmål

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

Ja — indsæt en hel fil. Hver top-level-klasse kommer igennem med nested types udvidet og nedarvede felter fra superklasser taget med. Klasser som roden ikke refererer, sendes ud som separate XML-fragmenter, så ingenting forsvinder i stilhed.

Respekterer den JAXB-annotations som @XmlRootElement, @XmlElement, @XmlAttribute og @XmlTransient?

Ja. @XmlRootElement(name="x") omdøber roden, @XmlElement(name="x") omdøber et child, @XmlAttribute(name="x") sender feltet ud som attribut på parenten, @XmlTransient dropper det, og @XmlElementWrapper lægger den ydre container om en collection. Det svarer til adfærden der er beskrevet i JAXB-tutorialet.

Hvad med Lombok og Jackson XML?

Lombok @Data, @Getter og @Setter behandles som om accessors var skrevet i hånden. Jackson XML-annotations — @JacksonXmlProperty, @JacksonXmlRootElement, @JacksonXmlElementWrapper, @JacksonXmlText — respekteres også, så klasser bygget til XmlMapper i Jackson dataformats-text kommer korrekt igennem.

Hvordan håndteres BigDecimal, LocalDate, UUID og null-felter?

BigDecimal bevarer fuld præcision, ingen scientific notation. LocalDate, LocalDateTime og ZonedDateTime kommer ud som ISO-8601-strings. Instant får et Z-suffix. UUID er standard 8-4-4-4-12 hex med små bogstaver. Optional.empty() og boxed primitives med null bliver til tomme elementer i stedet for at ryge ud, så XML-ens form er ens på tværs af instanser.

Bliver min kode gemt?

Koden sendes til backenden for at blive konverteret og bliver ikke persisteret — vi logger ikke payloaden. Samme forbehold som med ethvert online-værktøj: hvis koden er rigtig følsom, kig den igennem før du indsætter.

Hvad hvis klassen indeholder noget usædvanligt — Streams, CompletableFuture eller et transient-felt?

Felter markeret transient eller annoteret @XmlTransient / @JsonIgnore bliver sprunget over. Typer som XML-verdenen ikke har en direkte mapping til (Streams, CompletableFuture, egne functional interfaces) kommer ud som tomme elementer i stedet for at vælte hele konverteringen. Hvis selve Java-koden har en compile-fejl, så fix de åbenlyse først — parseren er tilgivende, men den er ikke en fuld javac.

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

Java til XML er bare ét stykke af puslespillet. Her er værktøjerne der passer godt til: