Formateur XML

Collez du XML et il se met en page — texte et attributs restent intacts.

Mode d’emploi

  1. Collez votre XML dans la zone — il est formaté au fil de la frappe, aucun bouton à cliquer.
  2. Choisissez Formater ou Minifier, et 2 ou 4 espaces pour l’indentation ; le résultat s’actualise immédiatement.
  3. Si la structure est cassée, le message indique la ligne, la colonne et l’élément. Copiez le résultat ou téléchargez-le sous forme de fichier .xml.

Exemple

Saisie

<?xml version="1.0" encoding="UTF-8"?><commande id="A-1042"><client><nom>Ada Lovelace</nom><email>ada@example.com</email></client><articles><article sku="X-1" qte="2">Engrenage de machine analytique</article><article sku="X-2" qte="1">Jeu de cartes perforées</article></articles></commande>

Formaté

<?xml version="1.0" encoding="UTF-8"?>
<commande id="A-1042">
  <client>
    <nom>Ada Lovelace</nom>
    <email>ada@example.com</email>
  </client>
  <articles>
    <article sku="X-1" qte="2">Engrenage de machine analytique</article>
    <article sku="X-2" qte="1">Jeu de cartes perforées</article>
  </articles>
</commande>

Règles par défaut uniquement : un élément par ligne, deux espaces par niveau. L’ordre des attributs, les guillemets et les valeurs restent intacts, tout comme le texte à l’intérieur de <nom>.

Règles, limites et problèmes connus

  • Vérification de structure uniquement : appariement des balises, guillemetage/duplication/séparation des attributs, noms d’éléments et d’attributs, syntaxe des entités. Pas de validation DTD ou XSD, pas d’expansion d’entités, pas de vérification de liaison des préfixes d’espace de noms.
  • Seuls les espaces structurels sont réécrits — les espaces entre attributs et ceux qui composent un élément sans texte. L’ordre des attributs, le style de guillemets, les valeurs, les entités, les commentaires, CDATA et le sous-ensemble interne de la DOCTYPE sont copiés caractère par caractère.
  • Le contenu mixte n’est jamais réindenté : dans <p>Bonjour <b>tout le monde</b> !</p>, l’espacement est conservé tel que saisi, car ajouter des sauts de ligne modifierait le texte. Il en va de même pour xml:space="preserve", copié mot pour mot.
  • Les éléments vides conservent la forme que vous avez saisie : <a></a> n’est pas réduit à <a/>, et <a/> n’est pas développé. Les attributs ne sont pas triés et les guillemets ne sont pas unifiés.
  • La minification supprime uniquement les espaces structurels. Les espaces du texte, les commentaires, CDATA et la DOCTYPE sont conservés — rien n’est retiré de votre contenu.
  • Une balise, un commentaire, CDATA ou une DOCTYPE non fermé tout à la fin de la saisie est signalé comme un avertissement, pas comme une erreur : vous obtenez tout de même un résultat. Les vraies erreurs (balises non appariées, valeurs d’attribut sans guillemets, « & » isolé) sont des erreurs avec ligne et colonne.
  • Un fragment (plusieurs éléments de premier niveau, ou du texte hors de la racine) est formaté et signalé comme fragment. Une saisie sans aucun élément est une erreur.
  • Les numéros de ligne et de colonne comptent les points de code Unicode : un émoji occupe donc une colonne. Seuls l’espace, la tabulation, le saut de ligne et le retour chariot comptent comme espaces ; U+3000 ou U+00A0 dans le texte est du contenu et n’est jamais supprimé.
  • Pas de HTML : les balises fermantes omises comme </li> ou <br> sont signalées comme non fermées. Pas d’envoi de fichier, pas de paramètres d’URL, pas d’historique, pas de vue arborescente, pas de conversion XML→JSON. Tout s’exécute dans votre navigateur : rien n’est envoyé ni stocké.
  • Au-delà de 200 000 caractères, le résultat s’actualise environ 0,6 s après l’arrêt de la frappe ; le texte n’est jamais tronqué. La sortie utilise LF et ne se termine pas par un saut de ligne ; le formatage est idempotent.

Ce dont on a généralement besoin ensuite, une fois la structure lisible.