Как остановить XMLReader, выбрасывающий недопустимое исключение XML-символов



Итак, у меня есть некоторый 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 из здесь , но поскольку "" еще не закодирован, он не удаляется.



Ошибка выбрасывается на читателя.Read (); строка с исключением:




Шестнадцатеричное значение 0x0B, является недопустимым символом.


604   1  

1 ответ:

Проблема в том, что у вас нет XML-у вас есть какая-то строка, которая выглядит как XML, но, к сожалению, не соответствует действительности. К счастью, вы можете сказать XmlReader, чтобы быть более снисходительным:

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

Обратите внимание, что вы все равно получите XML, который при сериализации может вызвать проблемы дальше по строке, поэтому вы можете захотеть отфильтровать символы в любом случае, когда вы читаете его.

Comments

    Ничего не найдено.