#c# #xml #parsing #hex
#c# #xml #синтаксический анализ #шестнадцатеричный
Вопрос:
Как избежать шестнадцатеричных символов перед синтаксическим анализом XML?
Комментарии:
1. Вы пытаетесь загрузить свой xml перед расшифровкой ваших данных, это намеренно?
2. о, хорошо, это хорошая идея, прочитать с помощью FileStream, расшифровать его и проанализировать с помощью xml? вы это имеете в виду?
3. чтобы загрузить файл, попробуйте следующее: XDocument doc2 = XDocument. Загрузка (путь);
4. Я не знаю точного способа, который вы используете для шифрования с помощью CryptoConfing, но я вижу, что он не использовался до загрузки xml. Хотя я предполагаю, что вам сначала нужно расшифровать файл с помощью filestream и using XDocument. Выполните синтаксический анализ, чтобы загрузить его. Это если зашифрованные вещи не записаны в XML-тегах, тогда ошибка заключается в чем-то другом.
Ответ №1:
Ваша проблема не в шестнадцатеричном символе (все они хороши). Ваша проблема заключается в символе, который не разрешен в XML. Шестнадцатеричное значение этого символа (все символы имеют шестнадцатеричное значение) указано в сообщении об ошибке, чтобы помочь вам определить, что это за символ, что особенно полезно, поскольку символы, запрещенные в XML, обычно являются управляющими символами, несимволами и неправильно подобранными суррогатами, все из которых в любом случае не являются символами для печати.
Другими словами, если вы видите это сообщение об ошибке, вы пытаетесь проанализировать что-то как XML, которое не является XML.
Есть несколько причин, которые могут вызвать это:
- Ошибка в отправленном XML (это должен был быть XML, но он глючит).
- Вы просто выбрали не тот файл.
- Вы используете зашифрованный и / или сжатый файл перед расшифровкой и / или распаковкой.
- Вы обнаруживаете артефакты передачи, потому что вы читаете поток на неправильном уровне (довольно редко).
Первый случай может быть хуже, потому что он может быть вызван чьей-то ошибкой, и некоторые люди даже не верят, что в XML есть символы, запрещенные за такие вещи, как то, что они на самом деле не являются символами, и не исправят их беспорядок (блин!). Иногда вы можете отфильтровать их мусор, но это всегда чревато.
Тот факт, что вы говорите о расшифровке в другом месте в примере кода, заставляет меня подозревать случай 3: это зашифрованный XML, и вы его еще не расшифровали.
Это может быть смесь того и другого, когда кто-то пытается упаковать необработанные зашифрованные октеты в формат XML. Это невозможно сделать, но скорее, если вам нужно сохранить зашифрованные октеты в формате XML, вы должны перекодировать эти октеты в XML-совместимый формат, такой как base-64 или шестнадцатеричный. Или, альтернативно, просто не используйте XML для этого вообще.