Supprimer tous les caractères hexadécimaux avant de charger la chaîne dans un object document XML?

J’ai une chaîne XML qui est publiée sur un gestionnaire ashx sur le serveur. La chaîne xml est créée côté client et est basée sur quelques entrées différentes effectuées sur un formulaire. Il arrive que certains utilisateurs copient et collent d’autres sources dans le formulaire Web. Lorsque j’essaie de charger la chaîne xml dans un object xmldoc.LoadXml(xmlStr) aide de xmldoc.LoadXml(xmlStr) j’obtiens l’exception suivante:

 System.Xml.XmlException = {"'', hexadecimal value 0x0B, is an invalid character. Line 2, position 1."} 

En mode débogage, je peux voir le personnage malhonnête (désolé, je ne suis pas sûr de son titre officiel?):

Ma question est la suivante: comment puis-je nettoyer la chaîne XML avant de tenter de la charger dans l’object XMLDocument? Ai-je besoin d’une fonction personnalisée pour parsingr tous ces types de caractères un par un ou puis-je utiliser une classe native .NET4 pour les supprimer?

Caractère non autorisé en mode débogage

Voici un exemple de nettoyage de caractères xml non valides à l’aide de Regex :

  xmlSsortingng = CleanInvalidXmlChars(xmlSsortingng); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlSsortingng); public static ssortingng CleanInvalidXmlChars(ssortingng text) { ssortingng re = @"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]"; return Regex.Replace(text, re, ""); } 

Un moyen plus efficace de ne pas commettre d’erreur sur des caractères XML invalides consiste à utiliser l’indicateur CheckCharacters dans XmlReaderSettings.

 var xmlDoc = new XmlDocument(); var xmlReaderSettings = new XmlReaderSettings { CheckCharacters = false }; using (var ssortingngReader = new SsortingngReader(xml)) { using (var xmlReader = XmlReader.Create(ssortingngReader, xmlReaderSettings)) { xmlDoc.Load(xmlReader); } }