如何阻止XMLReader抛出无效的XML字符异常

use*_*er1 6 c# xml xmlreader invalid-characters

所以我有一些XML:

<key>my tag</key><value>my tag value &#xB;and my invalid Character</Value>

和XMLReader:

using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
     while (reader.Read())
     {
         //do my thing
     }
}
Run Code Online (Sandbox Code Playgroud)

我已经从这里实现了CleanInvalidCharacters方法,但由于" "尚未编码,因此不会被删除.

读者会抛出错误.阅读(); 有异常的行:

十六进制值0x0B,是无效字符.

Jer*_*ert 8

问题是你没有XML - 你有一些确定看起来像XML的字符串,但遗憾的是它并不合格.幸运的是,你可以说XmlReader是更宽容:

using (XmlReader reader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings { CheckCharacters = false }))
{
     while (reader.Read())
     {
         //do my thing
     }
}
Run Code Online (Sandbox Code Playgroud)

请注意,您仍将使用XML,在序列化时,可能会产生更深层次的问题,因此您可能希望在阅读后随后过滤掉字符.