Convertisseur Java vers XML
Collez des classes Java ou des POJOs. Récupérez du XML propre.
Ce que fait cet outil
Si vous avez déjà dû écrire à la main un payload XML calé sur une classe Java — pour un client SOAP, une config Spring, une intégration bancaire legacy ou une fixture JUnit — vous savez à quel point c'est pénible. Collez le Java ici et vous récupérez du XML bien formé d'un coup. Un seul POJO, un fichier avec des DTOs annotés Lombok ou un modèle profondément imbriqué avec plusieurs classes — même résultat : un document XML complet avec chaque champ préservé.
Ce n'est pas du templating aveugle. L'outil sait comment Java se sérialise en XML : BigDecimal garde sa précision exacte (pas de notation scientifique), LocalDate et LocalDateTime sortent en ISO-8601, UUID devient une string hex standard 8-4-4-4-12, Instant est un timestamp suffixé par Z, et les primitifs boxés avec valeurs null deviennent des éléments vides. List<T> devient un élément conteneur — par défaut wrappé, avec un enfant par item — comme le ferait Jakarta XML Binding (JAXB).
Les annotations sont respectées exactement comme Eclipse JAXB RI les traite. @XmlRootElement(name="...") renomme la racine, @XmlElement(name="...") renomme un enfant, @XmlAttribute émet le champ comme attribut du parent, @XmlTransient le supprime complètement et @XmlElementWrapper ajoute le conteneur externe autour d'une collection. Lombok @Data fonctionne aussi — les getters et setters générés sont traités comme des propriétés bean. Si vous préférez le module Jackson XML, ses @JacksonXmlProperty et @JacksonXmlElementWrapper sont aussi pris en compte. Classes imbriquées, champs hérités et plusieurs classes top-level — tout ressort proprement.
Comment l'utiliser
Trois étapes. Que vous colliez un POJO unique ou un fichier avec une douzaine de classes, ça marche pareil.
Collez votre Java (ou essayez l'exemple)
Déposez votre Java dans l'éditeur de gauche tel quel. Un POJO classique, une classe Lombok @Data, un DTO annoté JAXB ou un fichier avec plusieurs classes — tout passe. Cliquez sur Load Sample pour voir d'abord un exemple réaliste.
Pas besoin de virer les imports, de supprimer les annotations ou de nettoyer le fichier. Collez-le tel qu'il est dans votre IDE — commentaires, package et tout le reste.
Cliquez sur Convert
Cliquez sur le bouton vert Convert. L'outil lit le Java, préserve chaque champ et chaque classe, respecte les annotations et construit le XML d'une passe. Un bref indicateur de chargement apparaît pendant qu'il travaille.
Copiez le XML
Le panneau de droite se remplit de XML indenté et bien formé qu'un parseur XML conforme acceptera. Collez-le dans votre enveloppe SOAP, votre config Spring Boot, un test d'intégration ou un exemple de schéma XSD.
Quand ça sert vraiment
Monter des fixtures SOAP
Vous avez un DTO de requête JAX-WS ou Apache CXF et il vous faut un body XML pour SoapUI ou Postman. Collez la classe, récupérez le XML prêt pour l'enveloppe, et passez à autre chose.
Configs XML Spring Boot
Une classe @ConfigurationProperties Spring avec 30 champs se transforme en template XML prêt à éditer — pas besoin d'écrire à la main le boilerplate de applicationContext.xml.
Garder docs et code alignés
Générez des exemples XML pour un README, un wiki interne ou une doc de schéma XSD directement depuis vos vraies classes entités, comme ça les exemples ne dérivent jamais du code.
Seeder des tests d'intégration legacy
Transformez vos object-mothers JUnit en fichiers XML de seed pour des mock servers, des fixtures IBM MQ ou des systèmes enterprise legacy qui parlent encore XML.
Questions fréquentes
Je peux coller plusieurs classes d'un coup ?
Oui — collez un fichier entier. Chaque classe top-level ressort avec les types imbriqués développés et les champs hérités des superclasses inclus. Les classes que la racine ne référence pas sont émises comme fragments XML séparés, donc rien n'est silencieusement perdu.
Est-ce qu'il respecte les annotations JAXB comme @XmlRootElement, @XmlElement, @XmlAttribute et @XmlTransient ?
Oui. @XmlRootElement(name="x") renomme la racine, @XmlElement(name="x") renomme un enfant, @XmlAttribute(name="x") émet le champ comme attribut du parent, @XmlTransient le supprime, et @XmlElementWrapper ajoute le conteneur externe autour d'une collection. Ça correspond au comportement décrit dans le tutoriel JAXB.
Et Lombok et Jackson XML ?
Lombok @Data, @Getter et @Setter sont traités comme si les accesseurs étaient écrits à la main. Les annotations Jackson XML — @JacksonXmlProperty, @JacksonXmlRootElement, @JacksonXmlElementWrapper, @JacksonXmlText — sont aussi respectées, donc les classes faites pour le XmlMapper de Jackson dataformats-text ressortent correctement.
Comment sont gérés BigDecimal, LocalDate, UUID et les champs null ?
BigDecimal garde toute sa précision, pas de notation scientifique. LocalDate, LocalDateTime et ZonedDateTime sortent comme chaînes ISO-8601. Instant reçoit un suffixe Z. UUID est un hex standard 8-4-4-4-12 en minuscules. Optional.empty() et les primitifs boxés avec null deviennent des éléments vides plutôt que d'être supprimés, pour que la forme du XML reste cohérente entre instances.
Mon code est-il stocké ?
Le code est envoyé au backend pour la conversion et n'est pas persisté — on ne log pas le payload. Même avertissement que pour tout outil en ligne : si le code est vraiment sensible, relisez-le avant de le coller.
Et si la classe a un truc inhabituel — Streams, CompletableFuture ou un champ transient ?
Les champs marqués transient ou annotés @XmlTransient / @JsonIgnore sont ignorés. Les types qui n'ont pas de mapping direct côté XML (Streams, CompletableFuture, interfaces fonctionnelles custom) ressortent comme éléments vides plutôt que de casser toute la conversion. Si le Java lui-même a une erreur de compilation, corrigez d'abord les évidentes — le parseur est tolérant mais ce n'est pas un javac complet.
Autres outils qui pourraient vous servir
Java vers XML n'est qu'une pièce du puzzle. Voici les outils qui s'y marient bien :