XML - данные на корневом уровне недействительны

У меня есть XSD файл, который закодирован в UTF-8, и любой текстовый редактор, который я запускаю, не показывает никакого символа в начале файла, но когда я его вытаскиваю в отладчике Visual Studio, я четко см. пустое поле перед файлом.

Box in file

Я также получаю ошибку:

Данные на корневом уровне недопустимы. Строка 1, позиция 1.

alt text

Кто-нибудь знает, что это такое?

Обновление: Отредактированное сообщение, чтобы определить тип файла. Это файл XSD, созданный создателем Microsoft XSD.

Ответ 1

Оказывается, ответ заключается в том, что я вижу Byte Order Mark, который является символом, который сообщает, что есть загрузив документ, в который он закодирован. В моем случае он закодирован в utf-8, поэтому соответствующая спецификация была EF BB BF, как показано ниже. Чтобы удалить его, я открыл его в Notepad ++ и нажал кнопку "Кодировать в UTF-8 без спецификации", как показано ниже:

Saving in NotePad++.

Чтобы увидеть спецификацию, я должен был открыть ее в TextPad в двоичном режиме:, и провел Поиск в Google "EF BB BF" .

binary mode

Мне потребовалось около 8 часов, чтобы узнать, что это вызвало это, поэтому я решил поделиться этим со всеми.

Обновление. Если бы я прочитал сообщение Джоэл Спольски: Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Unicode и наборов символов (никаких оправданий!), тогда я, возможно, не имел этой проблемы.

Ответ 2

вот как вы это делаете с vim:

# vim file.xml
:set nobomb
:wq