40 Stimmen

XML - Daten auf Root-Ebene sind ungültig

Ich habe eine XSD-Datei, die in UTF-8 kodiert ist, und jeder Texteditor, den ich durchlaufen lasse, zeigt kein Zeichen am Anfang der Datei, aber wenn ich sie im Debugger von Visual Studio aufrufe, sehe ich eindeutig ein leeres Feld vor der Datei.

Box in file

Ich erhalte auch den Fehler:

Die Daten auf der Ebene Root sind ungültig. Zeile 1, Position 1.

alt text

Weiß jemand, was das ist?

Update: Der Beitrag wurde geändert, um den Dateityp zu präzisieren. Es handelt sich um eine XSD-Datei, die von Microsofts XSD Creator erstellt wurde.

58voto

George Stocker Punkte 56164

Es stellt sich heraus, dass die Antwort darin besteht, dass das, was ich sehe, eine Byte Order Mark Das ist ein Zeichen, das dem Programm, das das Dokument lädt, mitteilt, in welcher Sprache es kodiert ist. In meinem Fall ist es in utf-8 kodiert, so dass die entsprechende BOM war EF BB BF wie unten dargestellt. Um sie zu entfernen, öffnete ich sie in Notepad++ und klicken Sie auf "Encode in UTF-8 ohne BOM", wie unten gezeigt:

Saving in NotePad++ .

Um die Stückliste tatsächlich zu sehen, musste ich sie in TextPad im Binärmodus: und führte eine Google-Suche nach " EF BB BF " .

binary mode

Ich habe etwa 8 Stunden gebraucht, um herauszufinden, dass dies die Ursache war, also dachte ich, ich teile dies mit allen.

Update : Wenn ich den Blogbeitrag von Joel Spolsky gelesen hätte: Das absolute Minimum, das jeder Softwareentwickler unbedingt über Unicode und Zeichensätze wissen muss (keine Ausreden!) dann hätte ich dieses Problem vielleicht nicht gehabt.

29voto

Benedikt Waldvogel Punkte 11849

So machen Sie es mit Vim:

# vim file.xml
:set nobomb
:wq

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X