Vérifier votre XML
Balises mal appariées, entités non définies, espaces de noms cassés — détectés et localisés précisément par l'analyseur XML de votre navigateur. Rien n'est conservé.
- Jamais conservé
- Pas de file d'attente, pas d'attente
- Sans inscription, sans filigrane
Collez du XML : il est vérifié pendant la saisie.
Comment ça marche
Collez votre XML
Ou déposez le fichier. Rien n'est envoyé nulle part.
Lisez le verdict
Bien formé, avec un résumé de son contenu. Ou la ligne et la colonne exactes du premier problème.
Corrigez et revérifiez
Modifiez directement ; la réponse se met à jour pendant la saisie.
Deux niveaux d'exigence, et celui que vérifie cette page
XML définit deux niveaux de conformité, et on les confond sans cesse. Bien formé signifie que le document respecte la syntaxe propre au XML : un seul élément racine, chaque balise fermée, une imbrication correcte, des caractères autorisés, des esperluettes et chevrons correctement échappés, des valeurs d'attribut entre guillemets, des noms d'attribut uniques dans un même élément. Valide signifie davantage : que le document correspond en plus à un schéma donné, avec les bons éléments dans le bon ordre et les bons types de valeur. Cette page vérifie le premier niveau. Tout analyseur XML refuse un document qui n'y satisfait pas : c'est donc la vérification qui décide si un fichier peut être lu ou non.
Les erreurs sont prévisibles. Une & non échappée est de loin la plus fréquente — elle ouvre une référence d'entité, si bien qu'une URL avec paramètres collée telle quelle dans un élément casse le document. Un < isolé dans le texte a le même effet. Viennent ensuite les balises mal appariées ou non fermées, les éléments fermés dans le mauvais ordre, deux éléments racine, et un caractère de contrôle égaré que XML n'autorise pas du tout, alors qu'il est invisible dans le fichier.
Aucune DTD ni aucun schéma n'est jamais récupéré, délibérément : c'est une mesure de sécurité, pas une fonctionnalité manquante. Un document XML peut désigner une entité externe, et un analyseur qui la résout ira chercher ce vers quoi elle pointe — un fichier sur le disque, une adresse sur un réseau interne. C'est la vulnérabilité XML External Entity (XXE), l'une des catégories de failles les plus exploitées qui soient, et la seule défense complète consiste à ne jamais résoudre ces entités. Rien ici ne contacte donc quoi que ce soit, et la contrepartie est que la validation par schéma n'entre pas dans le périmètre.
Vous obtenez la ligne et la colonne exactes où l'analyse s'est arrêtée. Comme avec tout analyseur, c'est l'endroit où le document a cessé d'avoir du sens, pas forcément celui où se trouve l'erreur : une balise non fermée est généralement signalée au niveau de la balise fermante inattendue qui la suit, parfois des centaines de lignes plus loin. La position indiquée est le point de départ pour remonter, pas l'endroit à corriger.
Si vous cherchez autre chose
Pour valider selon un schéma, xmllint est l'outil de référence : xmllint --noout --schema schema.xsd file.xml pour XSD, --relaxng pour RELAX NG, et --noout --valid pour une DTD. Il signale chaque violation au lieu de s'arrêter à la première, ce qui est préférable quand un document est réellement incorrect et pas simplement cassé.
Dès qu'il s'agit de données non fiables, la configuration de l'analyseur compte davantage que le validateur. Désactivez explicitement la résolution des entités externes et le traitement des DTD dans le langage que vous utilisez — defusedxml en Python, LIBXML_NONET en PHP, le traitement sécurisé en Java — car plusieurs analyseurs populaires résolvent encore les entités par défaut, et c'est justement dans ce réglage par défaut que se trouve la vulnérabilité.
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.
Que signifie « bien formé » ?
Que le document respecte les règles propres au XML : chaque balise fermée, des balises imbriquées dans le bon ordre, exactement un élément racine, des attributs entre guillemets, et chaque & et < soit échappé, soit intégré à une entité valide. C'est la première des deux questions que l'on peut se poser sur un XML. La seconde — le document correspond-il à un schéma donné ? — est distincte, et cette page n'y répond pas.
Valide-t-il selon une DTD ou un schéma XSD ?
Non. L'outil vérifie que le document est du XML bien formé, ce qui correspond à l'erreur que la plupart des gens cherchent réellement. La validation par schéma nécessite votre fichier de schéma et un analyseur validant, et aucun navigateur n'en intègre ; prétendre le faire ici reviendrait soit à envoyer votre document à un serveur, soit à ne rien vérifier en silence. La distinction mérite d'être connue : un document peut être parfaitement bien formé et pourtant non conforme à son schéma.
Quelles sont les erreurs XML les plus courantes ?
L'esperluette isolée est la plus fréquente — & doit s'écrire &, même dans une URL, si bien qu'une chaîne de requête collée telle quelle dans un élément casse le document. Viennent ensuite : une balise fermée dans le mauvais ordre, deux éléments racine, une entité non définie comme (que HTML définit et XML non), et un préfixe d'espace de noms utilisé sans avoir été déclaré. Chacune est signalée par son nom, avec sa position.
Le HTML est-il du XML valide ?
Généralement non, et c'est normal, pas une erreur. HTML autorise les balises non fermées comme <br> et <li>, les attributs sans guillemets et les esperluettes isolées ; XML n'autorise rien de tout cela. Si vous avez besoin d'un HTML qui soit aussi du XML valide, c'est du XHTML, et chaque balise doit y être fermée.
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, pas validation par schéma. Balises équilibrées, imbrication correcte et caractères autorisés sont vérifiés, et vous obtenez la ligne et la colonne exactes du premier problème. Valider selon une DTD ou un XSD obligerait à la récupérer, donc à effectuer une requête réseau que cette page s'interdit délibérément.
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
Formateur XML
Indentez votre XML pour pouvoir le lire
Validateur JSON
Trouvez l'endroit exact où votre JSON est cassé
Formateur JSON
Rendez lisible un JSON illisible
Décodeur JWT
Lisez le contenu d'un jeton, en toute confidentialité
Encoder en Base64
Transformez un texte ou un fichier en Base64
Décoder du Base64
Retrouvez le texte ou le fichier derrière du Base64