6

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

我已经从这里实现了 CleanInvalidCharacters 方法,但由于“ ”尚未编码,它不会被删除。

错误被抛出 reader.Read(); 行例外:

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

4

1 回答 1

10

问题是您没有 XML —— 您有一些看起来像 XML 但不幸的是并不真正符合条件的字符串。幸运的是,您可以说XmlReader要宽容一些:

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

请注意,您仍然会得到 XML,当序列化时,它可能会在后续产生问题,因此您可能希望在阅读它之后过滤掉这些字符。

于 2014-10-14T10:11:32.097 回答