根级别的数据无效[重复]

Posted

技术标签:

【中文标题】根级别的数据无效[重复]【英文标题】:Data at the root level is invalid [duplicate] 【发布时间】:2011-08-10 13:23:35 【问题描述】:

我有以下 XML 文档:

<?xml version="1.0" encoding="UTF-8"?>
<Offices id="0" enabled="false">
  <office />
</Offices>

当我尝试通过 C# 访问它时:

XmlDocument doc = new XmlDocument();
doc.LoadXml(HttpContext.Current.Server.MapPath("officeList.xml"));

我得到这个错误:

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

这条线有什么问题?

【问题讨论】:

注意:虽然这个问题比我刚刚关闭它的问题更老,但后面的问题更重要。特别是,它不会通过使用HttpContext 来解决问题。 我刚刚在 Visual Studio 中的 resx 文件上出现此错误,通过关闭 Visual Studio 并再次打开它已解决。 检查 web.config,我在它的开头有一个无效字符。 欺骗方向应该反过来。这一个比较老,除了另一个也有正确答案之外,还有更多的答案,涵盖了更多的案例。 【参考方案1】:

这个:

doc.LoadXml(HttpContext.Current.Server.MapPath("officeList.xml"));

应该是:

doc.Load(HttpContext.Current.Server.MapPath("officeList.xml"));

LoadXml() 用于加载 XML 字符串,而不是文件名。

【讨论】:

最后一行帮助了我,我遇到了数据根错误,但不知道从项目中加载配置文件,所以我使用了 xmlDoc.Load(filePath) 并且它起作用了!!!谢谢! XmlDocument.LoadXml() 加载 XML 字符串 XmlDocument.Load() 加载 XML 文件【参考方案2】:

记录在案:

“根级别的数据无效”表示您试图解析非 XML 文档的内容。它甚至没有开始 看起来像一个 XML 文档。它通常意味着您发现的内容:您正在解析字符串“C:\inetpub\wwwroot\mysite\officelist.xml”之类的内容。

【讨论】:

... 或以 xml 文档规范行开头的内容 ... ?> 像往常一样,这对我们来说绝对看起来像一个 xml 文档,但不是 XmlDocument.LoadXml(),请参阅 Joseph Morgan 的评论【参考方案3】:

我发现我使用的示例在第一行有一个 xml 文档规范。我使用的是在this blog entry 获得的样式表,第一行是

<?xmlversion="1.0"encoding="utf-8"?>

这是导致错误的原因。当我删除该行时,样式表以该行开头

<xsl:stylesheet version="1.0" xmlns:DTS="www.microsoft.com/SqlServer/Dts" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

我的转换成功了。 顺便说一句,那篇博文是我发现的第一个很好的、易于理解的示例,用于尝试从 SSIS 包的 XML 定义中获取信息,但我确实必须为我的 SSIS 2008 包修改示例中的路径,所以你也可以。我还创建了一个版本来从优先约束中提取“流”。我的最后一个看起来像这样:

    <xsl:stylesheet version="1.0" xmlns:DTS="www.microsoft.com/SqlServer/Dts" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" encoding="utf-8" />
    <xsl:template match="/">
    <xsl:text>From,To~</xsl:text>
    <xsl:text>
</xsl:text>
    <xsl:for-each select="//DTS:PrecedenceConstraints/DTS:PrecedenceConstraint">
      <xsl:value-of select="@DTS:From"/>
      <xsl:text>,</xsl:text>
      <xsl:value-of select="@DTS:To"/>
       <xsl:text>~</xsl:text>
      <xsl:text>
</xsl:text>
    </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

并给了我一个以波浪号作为行分隔符的 CSV。我在我的文本编辑器中用换行符替换了它,然后导入到 excel 中以查看包中的数据流。

【讨论】:

这实际上并不能回答问题。 +1 用于提及 XmlDocument.LoadXml() 的文档规范行的问题。我的问题与原始问题有相同的例外,使用相同的 LoadXml() 调用,现在已解决。

以上是关于根级别的数据无效[重复]的主要内容,如果未能解决你的问题,请参考以下文章

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

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

django rest框架-如何在根级别停止子重复

API Microsoft Translator 异常:“根级别的数据无效。第 1 行,位置 1。”

“根级别的数据无效。第 1 行,位置 1”解析 XML 时

xml.LoadData - 根级别的数据无效。第 1 行,位置 1