我正在尝试使用此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 document = XElement.Load(sr)之后有一个LINQ查询,它正在工作,
所以我在LINQ查询中放了一个断点,我收到了这个错误 -
XmlException - 根级别的数据无效。第1行,位置1.
我该如何解决?
编辑:稍微更改了代码 - 刚刚删除了StreamReader
答案 0 :(得分:2)
嗯,听起来好像它不是一个有效的XML文件。
如果您打印出sr.ReadToEnd()
的结果而不是打电话给XElement.Load
,它会是什么样子?如果您尝试将文件加载到XML编辑器中,会发生什么?
顺便说一句,最好使用using
语句而不是明确调用Dispose
:使用当前代码,如果StreamReader
抛出异常,则不会处置Load
。
最后,您是否有任何理由不仅仅使用XElement.Load(documentationFileLocation)
?
答案 1 :(得分:1)
您是否尝试过XDocument.Load()
而非使用XElement
?如果文件以XML声明<?xml ...
开头,则在尝试从中加载元素时可能会出现此错误。
编辑:您在pastebin上粘贴的文件没有指定编码。您可以尝试在记事本中打开此文件并将其重新保存为ANSI,看看它是否加载?只是为了确保我们没有编码或BOM问题。