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

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

Коробка в файле

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

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

альтернативный текст

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

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

2 ответа

Решение

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

Сохранение в NotePad ++,

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

двоичный режим

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

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

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

# vim file.xml
:set nobomb
:wq
Другие вопросы по тегам