Шестнадцатеричный 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">
Может стоит посмотреть.