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'");
I have a LINQ Query after XElement document = XElement.Load(sr) which dosen`t work,
So I put a breakpoint in the LINQ Query and I am getting this error - XmlException - D开发者_如何转开发ata at the root level is invalid. Line 1, position 1.How I can fix it?
Edit:Changed the code a little - just deleted StreamReader
Well, it sounds like it simply isn't a valid XML file.
If you print out the result of sr.ReadToEnd()
instead of calling XElement.Load
, what does it look like? If you try to load the file into an XML editor, what happens?
Btw, it's better to use a using
statement than calling Dispose
explicitly: with your current code, the StreamReader
isn't disposed if Load
throws an exception.
Finally, is there any reason you're not just using XElement.Load(documentationFileLocation)
?
Have you tried XDocument.Load()
instead of using XElement
? If the file begins with an XML declaration <?xml ...
, you might get this error when trying to load an element from it.
Edit: the file you pasted on pastebin has no encoding specified. Can you try to open this file in notepad and re-save it as ANSI, the see if it loads? Just to make sure that we don't have an encoding or BOM problem.
精彩评论