Incolla il Java a sinistra e clicca "Convert" — lo trasformiamo in XMLIncolla il codice Java

Cosa fa questo strumento

Se ti è mai toccato scrivere a mano un payload XML che combaci con una classe Java — per un client SOAP, una config di Spring, un'integrazione bancaria legacy o una fixture di JUnit — sai già quanto sia una rottura. Incolla qui il Java e ti torna XML ben formato in un colpo solo. Un POJO singolo, un file pieno di DTO con annotazioni Lombok o un modello profondamente annidato con più classi — stesso risultato: un documento XML completo con ogni campo preservato.

Non è templating alla cieca. Il convertitore sa come Java si serializza in XML: BigDecimal mantiene la precisione esatta (niente notazione scientifica), LocalDate e LocalDateTime escono in ISO-8601, UUID diventa una stringa hex standard 8-4-4-4-12, Instant è un timestamp con suffisso Z, e i primitivi boxed con valori null diventano elementi vuoti. List<T> diventa un elemento contenitore — di default wrappato, con un figlio per ogni item — come produrrebbe Jakarta XML Binding (JAXB).

Le annotazioni vengono rispettate esattamente come le tratta Eclipse JAXB RI. @XmlRootElement(name="...") rinomina il root, @XmlElement(name="...") rinomina un figlio, @XmlAttribute emette il campo come attributo sul padre, @XmlTransient lo elimina del tutto e @XmlElementWrapper aggiunge il contenitore esterno attorno a una collezione. Anche Lombok @Data funziona — i getter e setter generati vengono trattati come bean properties. Se preferisci il modulo Jackson XML, i suoi @JacksonXmlProperty e @JacksonXmlElementWrapper sono altrettanto rispettati. Classi annidate, campi ereditati e più classi top-level — tutto esce pulito.

Come si usa

Tre passi. Funziona uguale sia che incolli un POJO singolo sia un file con una dozzina di classi.

1

Incolla il tuo Java (o prova l'esempio)

Butta il tuo Java nell'editor a sinistra così com'è. Un POJO semplice, una classe Lombok @Data, un DTO con annotazioni JAXB o un file con più classi — tutto va bene. Clicca Load Sample per vedere prima un esempio realistico.

Non serve togliere gli import, rimuovere annotazioni o pulire il file. Incollalo com'è nell'IDE — commenti, statement di package, tutto.

2

Premi Convert

Clicca il pulsante verde Convert. Lo strumento legge il Java, preserva ogni campo e classe, rispetta le annotazioni e costruisce l'XML in una passata. Mentre gira vedi un breve indicatore di loading.

3

Copia l'XML

Il pannello a destra si riempie di XML indentato e ben formato che qualunque parser XML conforme agli standard accetterà. Copialo nel tuo envelope SOAP, nella config Spring Boot, in un test di integrazione o in un esempio di schema XSD.

Quando torna davvero utile

Costruire fixture SOAP

Hai un DTO di request JAX-WS o Apache CXF e serve un body XML per SoapUI o Postman. Incolli la classe, ti porti a casa l'XML pronto per l'envelope e passi oltre.

Config XML di Spring Boot

Una classe Spring @ConfigurationProperties con 30 campi diventa un template XML pronto da editare — niente più boilerplate di applicationContext.xml scritto a mano.

Tenere doc e codice allineati

Genera esempi XML per un README, una wiki interna o docs di schemi basati su XSD direttamente dalle tue classi entity reali, così gli esempi non si scollano mai dal codice.

Seed di test di integrazione legacy

Trasforma gli object-mother di JUnit in file XML di seed per mock server, fixture IBM MQ o sistemi enterprise legacy che parlano ancora XML.

Domande frequenti

Posso incollare più classi insieme?

Sì — incolla un file intero. Ogni classe top-level esce con i tipi annidati espansi e i campi ereditati dalle superclassi inclusi. Le classi non referenziate dal root vengono emesse come frammenti XML separati, così niente viene silenziosamente scartato.

Rispetta le annotazioni JAXB come @XmlRootElement, @XmlElement, @XmlAttribute e @XmlTransient?

Sì. @XmlRootElement(name="x") rinomina il root, @XmlElement(name="x") rinomina un figlio, @XmlAttribute(name="x") emette il campo come attributo sul padre, @XmlTransient lo elimina, e @XmlElementWrapper aggiunge il contenitore esterno attorno a una collezione. Combacia col comportamento descritto nel tutorial JAXB.

E Lombok e Jackson XML?

Lombok @Data, @Getter e @Setter vengono trattati come se gli accessor fossero scritti a mano. Le annotazioni di Jackson XML — @JacksonXmlProperty, @JacksonXmlRootElement, @JacksonXmlElementWrapper, @JacksonXmlText — sono anch'esse rispettate, quindi le classi costruite per l'XmlMapper di Jackson dataformats-text escono correttamente.

Come gestisce BigDecimal, LocalDate, UUID e i campi null?

BigDecimal mantiene la precisione completa, nessuna notazione scientifica. LocalDate, LocalDateTime e ZonedDateTime escono come stringhe ISO-8601. Instant prende il suffisso Z. UUID è l'hex standard 8-4-4-4-12 in minuscolo. Optional.empty() e i primitivi boxed con null diventano elementi vuoti anziché sparire, così la forma dell'XML resta consistente tra istanze.

Il mio codice viene salvato?

Il codice va al backend per essere convertito e non viene persistito — non logghiamo il payload. Stessa avvertenza di qualunque tool online: se il codice è davvero sensibile, dacci un'occhiata prima di incollare.

E se la classe ha qualcosa di strano — Streams, CompletableFuture o un campo transient?

I campi segnati come transient o annotati con @XmlTransient / @JsonIgnore vengono saltati. I tipi che il mondo XML non mappa direttamente (Streams, CompletableFuture, interfacce funzionali custom) escono come elementi vuoti invece di far saltare tutta la conversione. Se il Java stesso ha un errore di compilazione, aggiusta prima quelli ovvi — il parser è tollerante ma non è un javac completo.

Altri strumenti che potrebbero servirti

Java a XML è solo un pezzo del puzzle. Questi sono gli strumenti che ci stanno bene insieme: