XML - данные на корневом уровне недействительны
-
08-07-2019 - |
Вопрос
У меня есть XSD-файл, который закодирован в UTF-8, и любой текстовый редактор, через который я его запускаю, не отображает никаких символов в начале файла, но когда я поднимаю его в отладчике Visual Studio, я четко увидеть пустое поле перед файлом. Р>
Я также получаю сообщение об ошибке:
Данные на корневом уровне недействительны. Строка 1, позиция 1.
Кто-нибудь знает, что это такое?
Обновление: отредактированное сообщение для определения типа файла. Это XSD-файл, созданный создателем Microsoft XSD.
Решение
Оказывается, ответ таков: знак порядка байтов , который является символом, который сообщает всему, что загружает документ, в чем он кодируется. В моем случае он кодируется в utf-8, поэтому соответствующая спецификация была EF BB BF
, как показано ниже. Чтобы удалить его, я открыл его в Notepad ++ и нажал кнопку " Кодировать в UTF-8 без спецификации », как показано ниже:
. Р>
Чтобы увидеть спецификацию, мне пришлось открыть ее в TextPad в двоичном режиме: и выполнить поиск Google для " EF BB BF
" .
Мне потребовалось около 8 часов, чтобы выяснить, что это было причиной, поэтому я решил поделиться этим со всеми.
Обновление . Если бы я прочитал сообщение в блоге Джоэла Спольски: Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Юникоде и наборах символов (без извинений!) , тогда у меня, возможно, не было этой проблемы. Р>
Другие советы
вот как вы это делаете с vim:
# vim file.xml
:set nobomb
:wq