XMLTextReader est créé mais XslComstackdTransform.Transform échoue avec un caractère non valide

Mon code:

using (XmlTextReader inputReader = new XmlTextReader(xml, XmlNodeType.Document, new XmlParserContext(null, null, "en", XmlSpace.Default))) { XsltArgumentList arglist = new XsltArgumentList(); GetXSLT().Transform(inputReader, arglist, outputStream); } 

XmlTextReader est bien créé. Dans le XML, il existe une référence à une entité pour un onglet vertical (  ).

La ligne en erreur est l’appel de Transform. Il dit qu’il y a un caractère XML invalide (la tabulation verticale bien sûr).

J’ai essayé d’utiliser l’approche décrite dans l’article suivant:
Échapper aux caractères XML invalides en C #

Ma question est la suivante: comment puis-je supprimer ou ignorer les caractères non valides à l’aide du framework .NET, comme les états de liens?

remarque: de manière à ne pas coder en dur une liste de références d’entités à remplacer (je le fais déjà et c’est horrible et je me sens mal, et je devrais le faire)

Essayez d’ignorer les caractères XML non valides lors de la lecture et de l’écriture:

 var readerSettings = new XmlReaderSettings() { CheckCharacters = false, ConformanceLevel = ConformanceLevel.Document }; using (var inputReader = XmlTextReader.Create(xml, readerSettings, new XmlParserContext(null, null, "en", XmlSpace.Default))) { XsltArgumentList arglist = new XsltArgumentList(); var xslt = GetXSLT(); var writerSettings = xslt.OutputSettings.Clone(); writerSettings.CheckCharacters = false; using (var outputWriter = XmlWriter.Create(outputStream, writerSettings)) { xslt.Transform(inputReader, arglist, outputWriter); } }