根级别的数据无效

本文关键字:数据 无效 | 更新日期: 2023-09-27 17:52:34

我有以下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

这行有什么问题?

根级别的数据无效

This:

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

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

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

记录:

"根级数据无效"意味着您试图解析非XML文档的内容。它甚至没有开始看起来像一个XML文档。它通常意味着你所发现的:你正在解析类似于字符串"C:'inetpub'wwwroot'mysite'officelist.xml"的东西。

我发现我使用的示例在第一行有一个xml文档规范。我使用的是我在这个博客条目中得到的样式表,第一行是

<?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中,以查看包中的数据流。