所以我有一些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
     }
}

我已经从here实现了CleanInvalidCharacters方法,但是由于尚未对“&#xB”进行编码,因此无法将其删除。

该错误被抛出给reader.Read();。符合异常(exception)情况:

最佳答案

问题是您没有XML-您拥有一些看起来像XML的字符串,但不幸的是,它实际上并不合格。幸运的是,您可以告诉XmlReader更加宽松:

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

请注意,您仍然会得到XML,该XML在进行序列化时可能会进一步产生问题,因此您可能希望随后在阅读字符时将其过滤掉。

关于c# - 如何停止XMLReader引发无效的XML字符异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26357994/

10-10 14:27