Как обойти 0x01 недопустимое символьное исключение. Использование Xdocument

Я пытаюсь разобрать папку с кучей файлов XML. XML-файлы содержат информацию о некоторых транспортных средствах. Файлы XML генерируются автоматически, и некоторые из них содержат недопустимые символы. Дело в том, что у меня слишком много файлов, чтобы исправить их вручную. Поэтому мне интересно, как я могу обойти недопустимое исключение символа? Это недопустимая строка в некоторых XML-файлах:

<ECU EcuName="ABS" EcuFamily="BSS" CplNo="&#01;" Address="0x0B" ConfigChecksum="0x00000000" Updated="false">

Я пытался использовать Streamreader без какого-либо успеха. Это мой код:

 XDocument docs = XDocument.Load(new System.IO.StreamReader((path), Encoding.GetEncoding("utf-8")));                
            var nameValues =
                from fpc in docs.Descendants("FPC")
                select new
                {
                    Name = (string)fpc.Attribute("Name"),
                    Value = (string)fpc.Attribute("Value")
                };

1 ответ

Решение

Если вам нужно, вы можете загрузить файл, например, с

XDocument doc;
using (XmlReader xr = XmlReader.Create(path, new XmlReaderSettings() { CheckCharacters = false }))
{
  doc = XDocument.Load(xr);
}
// now query document here

Это получит ссылки на символы, подобные той, которую вы показали, а не запрещенные литеральные символы.

Другие вопросы по тегам