Analyseur XML : un caractère non valide a été trouvé dans le contenu du texte

Cet article vous aide à résoudre les erreurs lors de l’analyse du langage XML (Extensible Markup Language) qui contient des caractères spéciaux à l’aide de l’analyseur Microsoft XML (MSXML).

Version d’origine du produit : .NET Framework
Numéro de la base de connaissances d’origine : 238833

Symptôme

Lorsque vous analysez du code XML contenant des caractères spéciaux à l’aide de l’analyseur MICROSOFT XML (MSXML), l’analyseur peut signaler le message d’erreur suivant à la ligne et à la position du premier caractère spécial :

Un caractère non valide a été trouvé dans le contenu du texte.

Cause

Le document XML n’est pas marqué avec le schéma d’encodage de caractères approprié.

Résolution

  • Spécifiez le schéma d’encodage approprié dans l’instruction de traitement XML.
  • Réencodez les données XML en UTF-8 approprié.

Statut

Ce comportement est inhérent au produit.

Plus d’informations

Caractère spécial fait référence à tout caractère en dehors de la plage standard de caractères ASCII (American Standard Code for Information Interchange) de 0x00 - 0x7F, tels que les caractères latins avec des accents, des umlauts ou d’autres signes diacritiques. Le schéma d’encodage par défaut pour les documents XML est UTF-8, qui encode les caractères ASCII avec une valeur de 0x80 ou supérieure différemment des autres schémas d’encodage standard.

Le plus souvent, vous rencontrez ce problème si vous travaillez avec des données qui utilisent le schéma d’encodage iso-8859-1 simple. Dans ce cas, la solution la plus rapide est généralement la première répertoriée précédemment dans la section Résolution . Par exemple, utilisez la déclaration XML suivante :

<?xml version="1.0" encoding="iso-8859-1" ?>
<rootelement>
    ...XML data...
</rootelement>

Au lieu de cela, vous pouvez encoder chacun de ces caractères à l’aide de la référence d’entité numérique. Par exemple, vous pouvez prendre le caractère spécial á, utiliser <test> &#225;</test> (version décimale) ou <test>&#x00E1;</test> (version hexadécimale).