Formater du XML
Transformez un bloc de XML compact en texte lisible, ou minifiez-le à nouveau. Commentaires, sections CDATA et espaces de noms restent intacts. Rien n'est conservé.
- Jamais conservé
- Pas de file d'attente, pas d'attente
- Sans inscription, sans filigrane
Le XML formaté s'affiche ici.
Comment ça marche
Collez votre XML
Ou déposez un fichier .xml, .svg, .rss ou .xsd. Il n'est jamais conservé.
Choisissez l'indentation
Deux espaces, quatre, des tabulations, ou minifié sur une seule ligne.
Copiez ou téléchargez
Si le XML est cassé, vous obtenez la ligne et la colonne au lieu d'un résultat.
Pourquoi réindenter du XML est plus risqué qu'il n'y paraît
En XML, les espaces blancs sont significatifs par défaut, et c'est ce qui surprend le plus. Contrairement au JSON, où la mise en forme ne change rien, un analyseur XML est tenu de signaler les espaces et retours à la ligne entre les éléments comme du contenu textuel — c'est le schéma, s'il existe, qui indique qu'on peut les ignorer. Réindenter un document le modifie donc réellement : pour la plupart des fichiers de configuration et de données, cela n'a aucune importance, mais pour les documents à contenu mixte — texte et éléments côte à côte, comme en XHTML ou en DocBook — cela peut changer ce que dit le document.
La mise en forme laisse donc intact ce qui doit l'être. Un élément portant xml:space="preserve" conserve son contenu exactement tel qu'il est écrit, car cet attribut existe précisément pour l'exiger. Les sections CDATA sont transmises sans modification : elles servent à contenir du texte qui ne doit pas être interprété, et les reformater les corromprait. Les références d'entité restent des références au lieu d'être remplacées par les caractères qu'elles représentent.
Les espaces de noms sont conservés exactement tels qu'ils sont écrits — préfixes, déclarations et éléments auxquels ils sont liés. Cela paraît évident, et pourtant non : un formateur qui normalise les préfixes, ou qui déplace les déclarations là où il estime qu'elles doivent se trouver, produit un document techniquement équivalent qui échoue avec les outils qui comparent les préfixes littéralement. L'ordre des attributs est lui aussi conservé, bien que XML le considère sans importance, pour la même raison : un diff avec la version précédente vaut plus qu'un fichier bien rangé.
Ce qui est vérifié pendant la mise en forme, c'est la bonne formation : chaque balise fermée, correctement imbriquée, un seul élément racine, des caractères autorisés, des esperluettes et chevrons correctement échappés. C'est la moins exigeante des deux conditions du XML. Un document peut être parfaitement bien formé et pourtant invalide au regard de la DTD ou du schéma qui le régit, ce qu'aucune mise en forme ne révélera.
Si vous cherchez autre chose
xmllint --format in.xml fait la même chose en ligne de commande et est déjà installé sur la plupart des systèmes Unix ; xmlstarlet fo --indent-tab offre plus de contrôle sur l'indentation elle-même. Tous deux gèrent des fichiers bien plus volumineux que ce qu'une page peut garder en mémoire.
Quand le document doit être comparé, signé ou stocké sous forme canonique, la mise en forme n'est pas du tout la bonne opération. Le XML canonique — xmllint --c14n — produit l'unique forme normalisée à laquelle se ramènent deux documents équivalents, et c'est sur elle que reposent les signatures numériques XML. Indenter un document signé casse sa signature, et c'est la façon la plus coûteuse de l'apprendre.
Questions fréquentes
Mon XML est-il conservé quelque part ?
Non. Aucun appel au serveur, aucune journalisation, et rien n'est conservé. Vous pouvez vous déconnecter d'Internet une fois la page chargée : elle continue de fonctionner. C'est plus important qu'il n'y paraît : ce que l'on colle dans un formateur en ligne, ce sont des réponses d'API, des fichiers de configuration et des messages d'erreur, qui contiennent régulièrement des jetons, des données clients et des noms d'hôtes internes.
Qu'est-ce qui est préservé lors de la mise en forme ?
Les commentaires, les sections CDATA, les instructions de traitement, la déclaration XML et tous les préfixes d'espaces de noms. L'ordre des attributs reste celui d'origine. Un élément qui ne contient que du texte reste sur une seule ligne, car répartir <title>Hello</title> sur trois lignes n'est pas plus lisible — et dans un document à contenu mixte, cela changerait ce que dit réellement le texte.
L'indentation va-t-elle changer le sens de mon XML ?
Dans un élément qui ne contient que d'autres éléments, non. Mais XML n'a aucune règle générale selon laquelle les espaces blancs seraient insignifiants — dans un contenu mixte, où texte et éléments se côtoient, les espaces ajoutés FONT partie du texte. C'est pourquoi les éléments ne contenant que du texte restent ici sur une seule ligne au lieu d'être découpés. Si votre document contient un vrai contenu mixte et que les espaces comptent, la minification est l'opération la plus sûre.
Est-ce que ça fonctionne avec du HTML ?
Seulement si le HTML est du XML bien formé — ce qui n'est pas le cas de la plupart des pages HTML réelles. Les balises <br>, <img> et <li> non fermées, les attributs sans guillemets et les esperluettes isolées sont tous autorisés en HTML et tous invalides en XML. L'analyseur utilisé ici est un analyseur XML strict : il les signale comme des erreurs au lieu de deviner. XHTML et SVG se formatent parfaitement.
Et le SVG ?
Oui — le SVG est du XML, et c'est un bon moyen de lire un fichier minifié. Tracés, dégradés et styles intégrés restent inchangés ; seuls les espaces entre les éléments bougent.
Y a-t-il une limite de taille ?
La mémoire disponible, plutôt qu'un plafond que nous imposerions. Les documents de quelques mégaoctets se formatent instantanément ; les très gros sont limités par ce qui peut être chargé en une fois, pas par quoi que ce soit de notre côté.
Bon à savoir : Bonne formation uniquement. Le document est vérifié (balises équilibrées, imbrication correcte, caractères autorisés) puis réindenté — mais aucune DTD ni aucun XSD n'est récupéré ni appliqué : un fichier peut donc se formater sans erreur tout en restant invalide au regard de son schéma. Les espaces de noms sont conservés exactement tels qu'ils sont écrits.
Intégrez cet outil à votre site
Gratuit pour tout blog, page de cours ou article d'aide. Collez un seul extrait de code et vos visiteurs pourront l'utiliser directement sur votre page.
Voir aussi : Outils développeur
Validateur XML
Trouvez l'endroit exact où votre XML est cassé
Formateur JSON
Rendez lisible un JSON illisible
Validateur JSON
Trouvez l'endroit exact où votre JSON est cassé
Décoder du Base64
Retrouvez le texte ou le fichier derrière du Base64
Encoder en Base64
Transformez un texte ou un fichier en Base64
Décodeur JWT
Lisez le contenu d'un jeton, en toute confidentialité