【问题标题】:Invalid Assembly XML File无效的程序集 XML 文件
【发布时间】:2010-10-21 18:53:30
【问题描述】:


我正在尝试使用此 ocde 读取 XML 文档文件 (C#) -
类型 classType = typeof(Point);

        string documentationFileLocation = classType.Assembly.CodeBase;
        if ( !string.IsNullOrEmpty(documentationFileLocation) && documentationFileLocation.StartsWith("file:///") )
        {
            documentationFileLocation = documentationFileLocation.Replace(".exe",".xml");
            documentationFileLocation = documentationFileLocation.Replace("file:///","");
            if(File.Exists(documentationFileLocation))
            {

                XElement document = XElement.Load(documentationFileLocation);
                // Some Code Logic Here using LINQ
            }
            else
            {
                Console.WriteLine("Please Go to Project Properties->Build and check 'XML Documentation file'");

我在 XElement 文档 = XElement.Load(sr) 之后有一个 LINQ 查询,但它不起作用,
所以我在 LINQ 查询中放置了一个断点,我收到了这个错误 -
XmlException - 根级别的数据无效。第 1 行,位置 1。

我该如何解决?

编辑:稍微更改了代码 - 刚刚删除了 StreamReader

【问题讨论】:

    标签: c# .net xml


    【解决方案1】:

    嗯,听起来它根本就不是一个有效的 XML 文件。

    如果打印出sr.ReadToEnd() 的结果而不是调用XElement.Load,它会是什么样子?如果您尝试将文件加载到 XML 编辑器中,会发生什么情况?

    顺便说一句,使用using 语句比显式调用Dispose 更好:使用您当前的代码,如果Load 引发异常,则不会释放StreamReader

    最后,你有什么理由不只是使用XElement.Load(documentationFileLocation)

    【讨论】:

    • 我正在做-Console.WriteLine(sr.ReadToEnd()) 并且我的屏幕是空的,我检查了两次文件是否存在于documentationFileLocation。我删除了StreamReader 并添加了XElement.Load( documentationFileLocation) 仍然出现问题,而且我没有特殊原因使用 StreamReader
    • @Yosy:嗯,听起来确实像一个空文件。您是否尝试将文件加载到 XML 编辑器中?
    • 是的,尝试使用记事本和 Visual C# Express 2010,这是 xml 文件内容 - pastebin.com/YTTS6vcf
    【解决方案2】:

    您是否尝试过XDocument.Load() 而不是使用XElement?如果文件以 XML 声明 <?xml ... 开头,则在尝试从中加载元素时可能会收到此错误。

    编辑:您粘贴到 pastebin 的文件没有指定编码。您可以尝试在记事本中打开此文件并将其重新保存为 ANSI,看看它是否加载?只是为了确保我们没有编码或 BOM 问题。

    【讨论】:

    • 尝试使用 XDocument.Load() 仍然出现此错误,是的,文件以“" 开头
    • 问题是这个文件是由visual studio自动生成的(Project Properties -> Build -> XML Documentation file)
    • 是的,我知道。但正如我所写,这是为了诊断问题,以便我们知道如何继续......
    • 同样的错误,我认为我会在没有 BOM 的情况下被保存,因为 Visual Studio 每次构建时都会重新生成这个文件。
    • 我下载了 pastebin,我可以用XDocument 加载它就好了!所以还有其他一些问题……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 2012-03-13
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    相关资源
    最近更新 更多