XML: i dati a livello di radice non sono validi
-
08-07-2019 - |
Domanda
Ho un file XSD codificato in UTF-8 e qualsiasi editor di testo in cui lo eseguo non mostra alcun carattere all'inizio del file, ma quando lo tiro nel debugger di Visual Studio, chiaramente vedere una casella vuota davanti al file.
Ottengo anche l'errore:
I dati a livello di radice non sono validi. Riga 1, posizione 1.
Qualcuno sa di cosa si tratta?
Aggiornamento: post modificato per qualificare il tipo di file. È un file XSD creato dal creatore XSD di Microsoft.
Soluzione
Si scopre che la risposta è che quello che vedo è un Contrassegno di byte , che è un personaggio che dice a qualunque cosa stia caricando il documento in che cosa è codificato. Nel mio caso, è codificato in utf-8, quindi la DBA corrispondente era EF BB BF
, come mostrato di seguito. Per rimuoverlo, l'ho aperto in Notepad ++ e ho fatto clic su " Codifica in UTF-8 senza distinta base " ;, come mostrato di seguito:
.
Per vedere effettivamente la DBA, ho dovuto aprirla in TextPad in modalità binaria: e ho condotto a Ricerca Google per " EF BB BF
" .
Mi ci sono volute circa 8 ore per scoprire che questo era ciò che lo stava causando, quindi ho pensato di condividerlo con tutti.
Aggiornamento : se avessi letto il post sul blog di Joel Spolsky: Il minimo assoluto Ogni sviluppatore di software deve assolutamente conoscere positivamente Unicode e set di caratteri (senza scuse!) , quindi potrei non aver avuto questo problema.
Altri suggerimenti
ecco come lo fai con vim:
# vim file.xml
:set nobomb
:wq