Formateur et Validateur XML
Formatez, validez ou minifiez du XML instantanément dans votre navigateur — le résultat se met à jour en direct.
Votre document reste sur votre appareil
Rien à supprimer ensuite
Sûr pour des documents réglementés
Fonctionne dans tout navigateur moderne
Comment ça marche
- 1
Collez votre XML
Un fichier de configuration, une réponse d’API, une facture, un flux ou un export que vous devez lire.
- 2
Formatez ou minifiez
Indentez-le pour le lire, ou resserrez-le — les avertissements s’affichent dans les deux cas.
- 3
Copiez le résultat
Emportez-le dans un éditeur, un ticket, un jeu de test ou un document que vous allez envoyer.
Pourquoi cet outil
Prévenu quand le formatage change les données
Indenter un élément contenant du texte modifie ce texte, et vous l’apprenez avant plutôt qu’après.
Préfixes d’espaces de noms préservés
Les préfixes restent tels qu’écrits, si bien que les expressions XPath et les feuilles XSLT continuent de fonctionner.
Entités externes jamais résolues
Aucun fichier n’est lu et aucune URL récupérée : c’est la propriété dont un outil XML a le plus besoin.
Bombes d’expansion refusées
Un petit document qui se déploie en gigaoctets est détecté et rejeté au lieu de figer l’onglet.
Déclaration et encodage conservés
La déclaration XML, son attribut d’encodage et une éventuelle marque d’ordre d’octets ressortent inchangés.
Rien ne quitte le navigateur
Factures, messages SOAP et assertions d’identité sont traités sur cette page et envoyés nulle part.
Indenter du XML n’a rien de cosmétique — l’espace dans un élément, ce sont des données
C’est le fait qui sépare le formatage XML du formatage JSON, et presque toutes les surprises du sujet en découlent. En JSON, l’espace entre les jetons est entièrement hors du modèle de données : reformatez un document, et chaque valeur que lit votre analyseur reste identique. XML n’offre aucune garantie de ce type. Le contenu d’un élément est un nœud texte, et l’espace fait partie de ce nœud à moins qu’une déclaration explicite ne dise le contraire. Transformez `<nom>Ali</nom>` en une forme indentée avec le texte sur sa propre ligne, et l’élément ne contient plus `Ali` — il contient un saut de ligne, deux espaces, `Ali`, un autre saut et d’autres espaces. La plupart du code applicatif masque cela en supprimant les blancs à la lecture, et c’est précisément pourquoi le problème passe inaperçu jusqu’au moment où il compte : une valeur comparée à une base de données, une somme de contrôle, une signature. La spécification XML propose bien `xml:space="preserve"` pour déclarer l’espace signifiant, et un schéma peut marquer un élément comme insensible aux espaces, mais un formateur qui ne voit que le document ignore l’un et l’autre. Il doit avertir plutôt que supposer, et c’est ce que fait celui-ci.
Reformater un document signé invalide la signature, et c’est voulu
La conséquence ci-dessus devient concrète dès qu’un document est signé. Les signatures numériques XML ne signent pas le fichier — elles signent une forme canonique de l’arbre du document, produite par une étape de normalisation définie dans la spécification Canonical XML. Cette étape fige l’ordre des attributs, les déclarations d’espaces de noms et certains espaces, afin que deux documents signifiant la même chose donnent la même empreinte. Ce qu’elle ne fait pas, c’est pardonner l’espace que vous avez ajouté à l’intérieur du contenu d’un élément, car pour le modèle il ne s’agit pas de mise en forme mais d’une modification des données. Une facture signée, une assertion SAML ou un message SOAP embelli n’est donc plus valide, et l’échec est total : la vérification ne signale pas un léger écart, elle signale que la signature ne correspond pas. La règle à retenir : un document signé est un objet binaire déguisé en texte. Lisez-le formaté si vous voulez, mais envoyez les octets que vous avez reçus.
Factur-X et la facturation électronique : le cas où tout cela devient obligatoire
Peu de contextes rendent ce sujet aussi immédiatement pratique que la facturation électronique française. Factur-X — le format franco-allemand jumeau de ZUGFeRD — intègre une facture structurée en XML à l’intérieur d’un fichier PDF/A-3, ce qui donne un document à deux vérités : le PDF que les humains regardent et le XML que le logiciel comptable du destinataire lit réellement. Quand une facture est rejetée, on extrait presque toujours ce XML et on le formate pour arriver à le lire, et c’est exactement là que les deux sections précédentes mordent. D’abord, l’indentation qui se glisse dans le contenu d’un élément modifie des valeurs qu’une règle de contrôle teste contre un format ou contre un total. Ensuite, si la facture est signée, l’embellir la rend invalide, et le rejet revient sans expliquer pourquoi. Le schéma est donc toujours le même : lire formaté, envoyer inchangé. Enfin, une facture porte un numéro de TVA, un IBAN et l’adresse d’un client, ce qui suffit à expliquer pourquoi elle n’a rien à faire sur le serveur de quelqu’un d’autre.
Le préfixe d’espace de noms n’est pas le nom — c’est l’URI
Les espaces de noms sont l’endroit où la conception de XML surprend le plus ceux qui viennent de JSON, et où un formateur négligent fait de vrais dégâts. Un préfixe comme `soap:` ou `ns2:` est une abréviation locale sans signification propre ; ce qui identifie un élément, c’est l’URI à laquelle ce préfixe est lié. Deux documents employant `a:Body` et `env:Body` sont identiques si les deux préfixes sont liés à la même URI d’espace de noms, et deux documents employant tous deux `ns:Item` n’ont aucun rapport si les URI diffèrent. Voilà pourquoi un outil qui renomme obligeamment les préfixes en quelque chose de plus propre produit un document techniquement équivalent et pratiquement cassé : chaque expression XPath, chaque modèle XSLT et chaque sélecteur écrit à la main dans votre code désigne le préfixe et non l’URI, parce que c’est ce que les gens écrivent. Les espaces de noms par défaut ajoutent un second piège : un élément sans préfixe dans un `xmlns="…"` appartient à cet espace, tandis qu’un attribut sans préfixe n’appartient à aucun. Cet outil ne change aucun préfixe et ne déplace aucune déclaration.
L’expansion d’entités explique pourquoi il faut dire à un analyseur XML ce qu’il ne doit pas faire
XML permet à un document de définir ses propres entités et à une entité d’en référencer une autre. Cette seule fonctionnalité produit le déni de service le plus connu de l’histoire du format : définissez une entité comme dix copies d’une autre, imbriquez cela sur dix niveaux, et un document de quelques centaines d’octets se déploie en un milliard de caractères. Cela porte un nom — l’attaque du milliard de rires — et cela fonctionne sur tout analyseur qui développe les entités sans budget. Le problème plus tranchant est celui des entités externes, qui permettent à un document de déclarer que la valeur d’une entité doit être lue ailleurs : `SYSTEM "file:///etc/passwd"` lit un fichier local, et une URL en `http://` transforme l’analyseur en client de requêtes qui ira volontiers fouiller un réseau privé pour le compte d’un attaquant. C’est XXE, et cela sert depuis des années à lire des identifiants sur des serveurs de production. La défense n’est pas une analyse maligne, c’est un refus : un processeur qui ne résout jamais d’entité externe ne peut être amené à récupérer quoi que ce soit. Cet outil n’en résout aucune et plafonne l’expansion — un document hostile y est donc simplement rejeté.
Ce que contient réellement le XML que les gens ont besoin de formater
Il vaut la peine de nommer les documents, car la liste explique la prudence. XML est l’endroit où vivent les parties réglementées du monde logiciel : factures électroniques transmises à une administration fiscale, messages SOAP circulant entre banques, assertions SAML qui sont littéralement l’identité de quelqu’un en transit, dossiers de santé, pièces de procédure, exports de paie, flux produits avec des prix non publiés. Quand quelqu’un ouvre un formateur, c’est presque toujours parce que l’un de ces documents a échoué et qu’il faut le lire — l’exemple dans le presse-papiers est donc réel, avec le numéro fiscal du client et le sujet de l’assertion. Le coller dans un formateur hébergé envoie exactement cela, et une assertion SAML est, tant qu’elle reste valide, un justificatif au porteur. Cette page analyse et imprime le document en JavaScript sans émettre la moindre requête ; le panneau réseau de vos outils de développement montrera la même chose.
Erreurs courantes à éviter
- Croire que le formatage XML est sûr comme celui de JSON. L’espace dans un élément fait partie de son nœud texte : indenter modifie donc les valeurs qu’un analyseur relit.
- Embellir un document signé. Les signatures couvrent une forme canonique de l’arbre, et l’espace ajouté dans le contenu d’un élément est un changement de données — la vérification échoue franchement.
- Réindenter une facture électronique signée avant de l’envoyer. Factur-X est contrôlé automatiquement, et le rejet ne vous dira pas que votre formateur en était la cause.
- Laisser un outil renommer les préfixes d’espaces de noms. L’URI est l’identité, mais chaque XPath et chaque XSLT de votre code désigne le préfixe.
- Analyser du XML non fiable avec les entités externes activées. `SYSTEM "file:///…"` lit des fichiers locaux et une URL http fait récupérer l’analyseur pour un attaquant : c’est XXE.
Comparaison
| Critère | Cet outil | Formateurs en ligne | Une extension d’éditeur |
|---|---|---|---|
| Document envoyé à un serveur | Jamais | Le plus souvent | Non |
| Avertit si l’indentation change les données | Oui | Non | Rarement |
| Résout les entités externes | Jamais | Parfois | Configurable |
| Préserve les préfixes d’espaces de noms | Toujours | Le plus souvent | Le plus souvent |
| Conserve déclaration et marque d’ordre d’octets | Oui | Variable | Le plus souvent |
| Prix | Gratuit | Gratuit / offres payantes | Gratuit |
Fonctionnalités
Formatage et minification
Les deux sens, avec la largeur d’indentation sous votre contrôle et les tabulations là où un projet les impose.
Contrôle de bonne formation
Balises déséquilibrées, esperluettes égarées et noms invalides sont signalés avec leur ligne et leur colonne.
Avertissements sur les espaces
Les éléments à contenu mixte ou à texte signifiant sont marqués avant que l’indentation ne les réécrive.
Ordre des attributs intact
Les attributs restent dans l’ordre du document, car certains consommateurs et certaines signatures en dépendent.
CDATA et commentaires préservés
Les sections sont gardées mot pour mot, y compris le contenu qui devrait sinon être échappé.
Gros documents pris en charge
Un export de plusieurs mégaoctets se formate sans envoi ni plafond de taille.
Rien à installer
Pas d’outil de build, pas d’environnement d’exécution, pas de dépendances : tout se passe sur la page web.
Compatible arabe et RTL
Interface complète en huit langues, dont l’arabe de droite à gauche.
Sécurisé par défaut
Servi en HTTPS, sans suivi du contenu ni envoi à un tiers.
Qui l’utilise
Développeurs d’intégration
Lire une réponse SOAP arrivée sur une seule ligne ininterrompue.
Équipes finance et facturation
Examiner une facture électronique refusée par une administration.
Administrateurs systèmes
Nettoyer un fichier de configuration avant de le verser au gestionnaire de versions.
Qui débogue une API
Trouver la seule esperluette non échappée qui a fait échouer l’analyse d’un document.
Questions Fréquentes
Non. Tout s’exécute localement dans votre navigateur — votre texte n’est jamais envoyé, stocké ni partagé.
Oui — entièrement gratuit, sans compte et sans limite.