Formateur et validateur XML

Collez du XML, formatez avec une indentation correcte, ou validez la syntaxe. Gère attributs et espaces de noms. Sans upload.

  1. Collez votre XML dans la zone de texte de gauche.
  2. Cliquez sur Formater pour faire un aller-retour par fast-xml-parser et produire du XML indenté.
  3. Cliquez sur Valider pour vérifier la well-formedness sans modifier l'entrée.
  4. Les erreurs indiquent la position fautive dans le document.
Que fait-il ?

Parse le XML avec fast-xml-parser et le ré-émet avec une indentation cohérente. L'ordre des attributs au sein de chaque élément est préservé ; l'imbrication des éléments est préservée exactement. Le contenu mixte (texte + éléments enfants) et les namespaces (prefix:tag) sont conservés intacts. La sortie est du XML well-formed — mais well-formed n'est pas synonyme de valide (la validité nécessite un schéma ou DTD, que cet outil ne vérifie pas).

Exemple

Entrée XML désordonnée :

<root version="1"><name>Ada</name><tags>math</tags><tags>logic</tags></root>

Sortie formatée :

<root version="1">
  <name>Ada</name>
  <tags>math</tags>
  <tags>logic</tags>
</root>

Erreurs XML courantes et comment les corriger

Les règles de well-formedness XML sont plus strictes que HTML. Les motifs ci-dessous couvrent la plupart des échecs du parser.

  • Balise non fermée. `<a><b></a>` est invalide — `<b>` doit être fermée (`<b/>` ou `</b>` quelque part). XML n'autorise pas les balises de fermeture optionnelles à la HTML.
  • Casse non concordante. XML est sensible à la casse — `<Foo></foo>` sont deux noms de balise différents. Faites correspondre la casse exactement.
  • Caractères spéciaux non échappés. Un `<`, `>`, `&` ou un guillemet littéral dans du texte ou une valeur d'attribut doit être échappé : `&lt;`, `&gt;`, `&amp;`, `&quot;`. Encadrez les données contenant ces caractères avec CDATA : `<![CDATA[...]]>`.
  • Plusieurs racines. XML exige exactement un élément racine. `<a/><b/>` au niveau supérieur est invalide — encadrez-les : `<root><a/><b/></root>`.
  • Nom d'élément invalide. Les noms d'éléments ne peuvent commencer par un chiffre, contenir des espaces, ou utiliser les caractères réservés (`< > & " \\\'`). Les noms commençant par `xml` (toute casse) sont réservés par la spécification.
  • Guillemets non concordants autour d'attributs. `<a name="value\\\'>` mélange guillemets doubles et simples. Choisissez un style cohérent par attribut. L'un ou l'autre est du XML valide.
Questions fréquentes

Le formatage change-t-il mes données ?

Seulement le whitespace entre éléments. L'ordre des éléments, l'ordre des attributs, les valeurs d'attributs, le contenu textuel et l'encadrement CDATA sont préservés. La forme auto-fermante (`<x/>`) et la forme explicite (`<x></x>`) peuvent se normaliser.

Les commentaires XML sont-ils préservés ?

fast-xml-parser supprime les commentaires par défaut. Si vous avez besoin d'un formatage préservant les commentaires, utilisez un autre outil (la transformation identité XSLT, par exemple, ou `xmllint --format`).

Cela valide-t-il contre un schéma ?

Non. Cela vérifie uniquement la well-formedness — que le document parse comme XML syntaxiquement valide. La validation de schéma (XSD, DTD, RelaxNG) est une étape distincte qui requiert le schéma en entrée supplémentaire.

Comment les namespaces sont-ils gérés ?

Les préfixes de namespace sont conservés dans le nom de l'élément (`x:foo`). Les déclarations de namespace par défaut et les liaisons de préfixes sont préservées comme attributs. Le traitement namespace-aware (résolution d'URI) n'est pas effectué.

Mon XML est-il téléchargé ?

Non. Tout s'exécute dans votre navigateur — votre entrée est parsée et ré-sérialisée par JavaScript sur cette page et n'est jamais envoyée à un serveur.

Puis-je personnaliser l'indentation ?

Actuellement fixée à 2 espaces par niveau. Pour personnaliser, lancez fast-xml-parser en ligne de commande — même bibliothèque — et passez `{ indentBy: " " }` ou n'importe quelle autre chaîne.