根层数据无效

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

这条线有什么问题?

这个:

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

应该:

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

LoadXml()用于加载XMLstring,而不是文件名。

作为logging:

“根级数据无效”表示您试图parsing非XML文档的内容。 它甚至没有看起来像一个XML文档。 它通常意味着你发现的东西:你正在parsing类似string“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包的例子中的path,所以你也可以。 我还创build了一个版本来从优先约束中提取“stream”。 我最后一个看起来像这样:

  <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与波浪线作为我的行分隔符。 我用我的文本编辑器中的换行符replace了它,然后导入到excel中,以查看包中的数据stream。