Как остановить XMLReader, выбрасывающий недопустимое исключение XML-символов
Итак, у меня есть некоторый XML:
<key>my tag</key><value>my tag value and my invalid Character</Value>
И XMLReader:
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
while (reader.Read())
{
//do my thing
}
}
Я реализовал метод CleanInvalidCharacters из здесь , но поскольку "" еще не закодирован, он не удаляется.
Ошибка выбрасывается на читателя.Read (); строка с исключением:
Шестнадцатеричное значение 0x0B, является недопустимым символом.
1 ответ:
Проблема в том, что у вас нет XML-у вас есть какая-то строка, которая выглядит как XML, но, к сожалению, не соответствует действительности. К счастью, вы можете сказать
XmlReader, чтобы быть более снисходительным:using (XmlReader reader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings { CheckCharacters = false })) { while (reader.Read()) { //do my thing } }Обратите внимание, что вы все равно получите XML, который при сериализации может вызвать проблемы дальше по строке, поэтому вы можете захотеть отфильтровать символы в любом случае, когда вы читаете его.
Comments