XML-ルートレベルのデータが無効です
-
08-07-2019 - |
質問
UTF-8でエンコードされたXSDファイルがあり、それを実行するテキストエディターでファイルの先頭に文字が表示されませんが、Visual Studioのデバッガーでプルアップすると、明らかにファイルの前に空のボックスがあります。
エラーも表示されます:
ルートレベルのデータが無効です。行1、位置1。
これが何であるか知っていますか?
更新:ファイルの種類を限定するために投稿を編集しました。これは、MicrosoftのXSD作成者によって作成されたXSDファイルです。
解決
結局のところ、答えはバイトオーダーマーク 、これはドキュメントの読み込み中に何がエンコードされているかを伝える文字です。私の場合、utf-8でエンコードされているため、以下に示すように、対応するBOMは EF BB BF
でした。削除するには、 Notepad ++ で開いて、「エンコード」をクリックします以下に示すように、BOMなしのUTF-8:
。
実際にBOMを表示するには、バイナリモードで TextPad でBOMを開いて、実施する必要がありました。 " EFのGoogle検索BB BF
" 。
これが原因であることが判明するまでに約8時間かかりましたので、これをみんなと共有したいと思いました。
更新:Joel Spolskyのブログ投稿を読んだ場合: すべてのソフトウェア開発者がユニコードと文字セットについて絶対的かつ積極的に知っておく必要のある絶対的な最低限(言い訳はありません!) 、この問題はなかったかもしれません。
他のヒント
vimでこれを行う方法は次のとおりです。
# vim file.xml
:set nobomb
:wq
所属していません StackOverflow