XML - данные на корневом уровне недействительны
У меня есть XSD-файл, который закодирован в UTF-8, и любой текстовый редактор, через который я его запускаю, не показывает никаких символов в начале файла, но когда я поднимаю его в отладчике Visual Studio, я ясно вижу пустой коробка перед файлом.
Я также получаю ошибку:
Данные на корневом уровне недействительны. Строка 1, позиция 1.
Кто-нибудь знает, что это?
Обновление: отредактированное сообщение для определения типа файла. Это XSD-файл, созданный создателем Microsoft XSD.
2 ответа
Оказывается, ответ заключается в том, что я вижу метку порядка байтов, то есть символ, который сообщает всему, что загружает документ, в чем он кодируется. В моем случае он кодируется в utf-8, поэтому соответствующий Спецификация была EF BB BF
, как показано ниже. Чтобы удалить его, я открыл его в Notepad++ и щелкнул "Кодировать в UTF-8 без BOM", как показано ниже:
,
Чтобы на самом деле увидеть спецификацию, мне пришлось открыть ее в TextPad в двоичном режиме: и выполнить поиск в Google по запросу " EF BB BF
"
У меня ушло около 8 часов, чтобы понять, что это было причиной этого, поэтому я решил поделиться этим со всеми.
Обновление: Если бы я прочитал пост в блоге Джоэла Спольски: "Абсолютный минимум, каждый разработчик программного обеспечения должен абсолютно, положительно знать о юникоде и наборах символов (нет оправданий!)", То у меня, возможно, не было бы этой проблемы.