Existe-t-il un moyen facile/général de nettoyer une source de données basée sur XML avant de l'utiliser dans un XmlReader afin de pouvoir consommer gracieusement des données XML qui ne sont pas conformes aux restrictions de caractères hexadécimaux imposées à XML ?
Note :
- La solution doit gérer les sources de données XML qui utilisent des codages de caractères caractères autres que UTF-8, par exemple en spécifiant le codage des caractères à la déclaration du document XML. Ne pas altérer le codage des caractères de la source en supprimant les caractères caractères hexadécimaux invalides a été un point d'achoppement majeur.
- La suppression des caractères hexadécimaux non valides ne devrait supprimer que les valeurs codées en hexadécimal, car on peut souvent trouver des valeurs refoulées dans des données qui contiennent une chaîne qui correspondrait à un caractère hexadécimal.
Le contexte :
J'ai besoin de consommer une source de données basée sur XML qui se conforme à un format spécifique (pensez aux flux Atom ou RSS), mais je veux pouvoir consommer des sources de données qui ont été publiées et qui contiennent des caractères hexadécimaux invalides selon la spécification XML.
Dans .NET, si vous avez un flux qui représente la source de données XML et que vous tentez de l'analyser à l'aide d'un XmlReader et/ou d'un XPathDocument, une exception est levée en raison de l'inclusion de caractères hexadécimaux invalides dans les données XML. Ma tentative actuelle pour résoudre ce problème consiste à analyser le flux en tant que chaîne de caractères et à utiliser une expression régulière pour supprimer et/ou remplacer les caractères hexadécimaux non valides, mais je suis à la recherche d'une solution plus performante.