Избегайте шестнадцатеричных символов перед анализом XML - PullRequest
1 голос
/ 20 мая 2011

Как избежать шестнадцатеричных символов перед анализом XML?

enter image description here

1 Ответ

0 голосов
/ 20 мая 2011

Ваша проблема не является шестнадцатеричным символом (все в порядке). Ваша проблема - это символ, который не разрешен в XML. Шестнадцатеричное значение этого символа (все символы имеют шестнадцатеричное значение) дается в сообщении об ошибке, чтобы помочь вам выяснить, что это за символ, что особенно полезно, поскольку символы, которые запрещены в XML, обычно являются управляющими символами, не символами и несоответствующие суррогаты, которые все равно не являются печатными символами.

Другими словами, если вы видите это сообщение об ошибке, вы пытаетесь проанализировать что-то как XML, который не является XML.

Есть несколько причин, которые могут вызвать это:

  1. Ошибка в отправленном XML (это было означало быть XML, но это глючит).
  2. Вы только что подобрали не тот файл.
  3. Вы используете зашифрованный и / или сжатый файл перед расшифровкой и / или распаковкой.
  4. Вы обнаруживаете артефакты передачи, потому что читаете поток на неправильном уровне (довольно редко).

Первый случай может быть хуже, потому что он может быть вызван чьей-то ошибкой, и некоторые люди даже не верят, что в XML есть символы, запрещенные для таких вещей, как на самом деле не являющиеся символами, и они не исправят их беспорядок (га!). Иногда вы можете отфильтровать их мусор, но это всегда чревато.

Тот факт, что вы говорите о расшифровке в другом месте примера кода, заставляет меня подозревать случай 3: это зашифрованный XML, и вы еще не расшифровали его.

Это может быть сочетание того и другого, когда кто-то пытается упаковать необработанные зашифрованные октеты в формат XML. Это невозможно, но если вам нужно хранить зашифрованные октеты в формате XML, вы должны перекодировать эти октеты в XML-совместимый формат, такой как base-64 или шестнадцатеричный. Или же просто не используйте XML для этого вообще.

...