【问题标题】:XML - Data At Root Level is InvalidXML - 根级别的数据无效
【发布时间】:2014-01-17 18:06:36
【问题描述】:

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

我也得到错误:

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

有人知道这是什么吗?

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

【问题讨论】:

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


    【解决方案1】:

    事实证明,答案是我看到的是Byte Order Mark,它是一个字符,它告诉正在加载文档的任何内容它的编码内容。在我的例子中,它是用 utf-8 编码的,所以对应的BOM为EF BB BF,如下图。要删除它,我在Notepad++ 中打开它,然后点击“Encode in UTF-8 without BOM”,如下图:

    要真正查看 BOM,我必须以二进制模式在TextPad 中打开它:并执行Google search for "EF BB BF"

    我花了大约 8 个小时才发现这是导致它的原因,所以我想我会与大家分享。

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

    【讨论】:

      【解决方案2】:

      这是使用 vim 的方法:

      # vim file.xml
      :set nobomb
      :wq
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-15
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-10
        相关资源
        最近更新 更多