Message d’erreur lorsqu’un document XML contient Low-Order caractères ASCII

Cet article vous aide à résoudre le problème qui se produit lorsqu’un document XML contient Low-Order caractères ASCII.

Version d’origine du produit : Microsoft XML
Numéro de la base de connaissances d’origine : 315580

Symptômes

Lorsque vous essayez d’utiliser les versions 3.0 ou ultérieures de l’analyseur MSXML pour analyser des documents XML qui contiennent certains caractères ASCII non imprimables de faible ordre (c’est-à-dire des caractères inférieurs à ASCII 32), vous pouvez recevoir le message d’erreur suivant :

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

Cause

Les versions 3.0 et ultérieures de l’analyseur MSXML appliquent strictement les plages de caractères XML valides définies par la spécification du langage XML W3C (World Wide Web Consortium). Les documents XML analysés à l’aide des versions 3.0 ou ultérieures de MSXML ne peuvent pas contenir de caractères qui se trouvent en dehors des plages de caractères XML valides définies. Les caractères ASCII non imprimables de faible ordre dans les plages répertoriées dans la section Informations supplémentaires ne sont pas des caractères XML valides. Un document XML qui contient des instances de ces caractères n’est pas conforme aux spécifications W3C et ne peut pas être analysé correctement avec les versions 3.0 et ultérieures de MSXML.

Résolution

Pour résoudre ce problème, supprimez les instances des caractères ASCII non imprimables de faible ordre, ou remplacez les caractères par un autre caractère valide tel que le caractère d’espace (ASCII 32, hexadécimal #x20). Cette solution rend le document XML conforme aux spécifications W3C. Toutefois, la suppression ou le remplacement d’instances de ces caractères peut affecter d’autres applications qui utilisent les données et pour lesquelles les caractères sont significatifs. Cet impact supplémentaire ne peut être identifié que par des tests et doit être résolu en implémentant un correctif ou une solution de contournement approprié à une situation spécifique.

Informations supplémentaires

Les versions 2.6 et antérieures de l’analyseur MSXML permettent aux documents XML de contenir des caractères ASCII non imprimables de faible ordre qui se trouvent en dehors des plages de caractères XML valides W3C. Toutefois, la conception des versions 3.0 et ultérieures de l’analyseur MSXML a été modifiée pour appliquer strictement les plages de caractères XML valides définies dans la spécification du langage XML W3C. Cette modification de conception est nécessaire pour pouvoir identifier les documents XML non conformes.

Voici les caractères XML valides et les plages de caractères (valeurs hexadécimale) définis par les spécifications du langage XML W3C 1.0 :

#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

Voici les plages de caractères pour les caractères ASCII non imprimables de faible ordre qui sont rejetés par MSXML versions 3.0 et ultérieures :

#x0 - #x8 (ASCII 0 - 8)
#xB - #xC (ASCII 11 - 12)
#xE - #x1F (ASCII 14 - 31)

Cette modification de conception peut affecter les utilisateurs et applications suivants :

  • Utilisateurs d’Internet Explorer : les utilisateurs qui ont utilisé Internet Explorer versions 5.5 et antérieures (et qui n’ont pas installé MSXML 3.0 en mode Remplacement) pour parcourir et afficher des documents XML qui contiennent une ou plusieurs instances des caractères ASCII non imprimables de faible ordre spécifié rencontrent le message d’erreur après la mise à niveau vers Internet Explorer 6.0, car Internet Explorer 6.0 installe MSXML 3.0 SP2 en mode De remplacement et l’utilise pour analyser les documents XML.
  • Utilisateurs MDAC et ADO : les développeurs et les utilisateurs qui chargent des documents XML persistants ADO qui contiennent une ou plusieurs instances des caractères ASCII non imprimables de faible ordre spécifiés dans des objets ADO Recordset rencontrent le message d’erreur après la mise à niveau vers MDAC 2.7, car MDAC 2.7 installe MSXML 3.0 SP2, qui est la version de l’analyseur MSXML utilisé par l’objet ADO 2.7 Recordset .
  • Applications qui utilisent le modèle DOM (Document Object Model) MSXML : les applications qui utilisent une version indépendante PROGIDs pour instancier des objets DOM MSXML utilisés pour analyser des documents XML génèrent l’erreur spécifiée lorsque MSXML 3.0 ou l’un de ses Service Packs est installé en mode Remplacement ou lorsque le code est modifié pour utiliser la version MSXML 3.0 ou 4.0 spécifique PROGIDsà la version .

References

Pour plus d’informations sur les autres causes connues et les solutions de contournement pour le message d’erreur spécifié dans la section Symptômes, consultez :