XML - 根级别的数据无效

时间:2008-11-14 21:14:16

标签: .net xml visual-studio xsd byte-order-mark

我有一个用UTF-8编码的XSD文件,我运行它的任何文本编辑器都没有在文件开头显示任何字符,但是当我在Visual Studio的调试器中提取它时,我清楚了看到文件前面的空框。

Box in file

我也得到错误:

根级别的数据无效。第1行,第1位。

alt text

任何人都知道这是什么?

更新:编辑帖子以限定文件类型。这是由Microsoft的XSD创建者创建的XSD文件。

2 个答案:

答案 0 :(得分:54)

事实证明,答案是我所看到的是一个Byte Order Mark,这是一个字符,告诉任何正在加载文档的内容。在我的情况下,它编码为utf- 8,因此相应的BOM为EF BB BF,如下所示。要删除它,我在Notepad++打开它,然后点击“在没有BOM的UTF-8中编码”,如下所示:

Saving in NotePad++

要实际查看BOM,我必须在二进制模式的TextPad中打开它,然后执行Google search for "EF BB BF"

binary mode

我花了大约8个小时才知道这是造成它的原因,所以我想我会和大家分享这个。

更新:如果我读过Joel Spolsky的博文:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!),那么我可能没有遇到过这个问题。

答案 1 :(得分:29)

这是你用vim做的:

# vim file.xml
:set nobomb
:wq