Comment empêcher XMLReader de générer une exception de caractère XML non valide

J’ai donc du XML:

my tagmy tag value and my invalid Character

et un XMLReader:

 using (XmlReader reader = XmlReader.Create(new SsortingngReader(xml))) { while (reader.Read()) { //do my thing } } 

J’ai implémenté la méthode CleanInvalidCharacters à partir d’ ici, mais comme “& # xB” n’est pas encore encodé, il n’est pas supprimé.

L’erreur est lancée sur le lecteur.Read (); ligne avec exception:

valeur hexadécimale 0x0B, est un caractère non valide.

Le problème est que vous n’avez pas de XML – vous avez une chaîne qui ressemble certainement à XML mais qui, malheureusement, ne se qualifie pas vraiment. Heureusement, vous pouvez dire à XmlReader d’être plus indulgent:

 using (XmlReader reader = XmlReader.Create(new SsortingngReader(xml), new XmlReaderSettings { CheckCharacters = false })) { while (reader.Read()) { //do my thing } } 

Notez que vous finirez toujours par avoir du XML qui, une fois sérialisé, risque de poser des problèmes plus loin dans la ligne. Vous souhaiterez donc peut-être filtrer les caractères par la suite lorsque vous le lirez.