Шестнадцатеричный 0X19 является недопустимым символом

ТАК,

Я строю строку XML на основе значений из набора данных, используя XMLWriter.

Он правильно строит строку XML согласно настройкам и условиям, которые я указал.

Если в наборе данных более 1000 записей, и когда я пытаюсь построить строку XML, я получаю вышеуказанную ошибку. шестнадцатеричный 0X19 является недопустимым символом

Как мне пройти это. Я потратил около 6 часов, пытаясь выяснить.

Пожалуйста помоги

4 ответа

Проще говоря, вы не можете использовать этот символ в документе XML, независимо от того, как вы его пометите. Чтобы процитировать спецификации:

Char:: = # x9 | #xA | #xD | [# x20- # xD7FF] | [# xE000- # xFFFD] | [# X10000-#x10FFFF]

Грубо говоря, это означает, что до 0x20 вам разрешены только табуляция (0x09), перевод строки (0x0a) и возврат каретки (0x0d).

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

Шестнадцатеричный 0x19 - это контрольный код в последовательности ASCII - это End of Medium (EM). Я не уверен, как он попадает в ваш поток данных. Если вы кодируете что-то, требующее более одного байта, в UTF-8, а затем рассматриваете это как однобайтовый набор символов или некоторую другую аналогичную последовательность кодирования / декодирования, вы можете увидеть второй байт последовательности UTF-8.

Вы транскодируете из одного набора символов в другой? и что такое входная и выходная кодировки?

Попробуйте вместо 0x19:)

шестнадцатеричное (основание 16) использует 16 символов от 0 до 9 и A B C D E F (или от a до f, что означает от 10 до 15)

0x это просто префикс для числовых констант в языках программирования (например, C) и оболочках

Я видел похожие ошибки с недопустимыми символами в именах тегов и / или атрибутов XML. Например, если вы не включите пробел при создании вручную XML,

 <tagNameattributeName="attributeValue">

будет выдавать ошибку против предполагаемого

 <tagName attributeName="attributeValue">

Может стоит посмотреть.

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