XDocument异常:缺少根元素。

3

I have a simple XML file:

<?xml version="1.0" encoding="utf-8" ?>
<Config>
<NumOfBytesInRow>20</NumOfBytesInRow>
<FirstBaudRate>115200</FirstBaudRate>
<SecondBaudRate>34800</SecondBaudRate>
<DefaultPort>COM1</DefaultPort>
<NumOfTries>2</NumOfTries>
</Config>

我正在尝试获取元素,但是一打开文件就会出现异常,提示根元素缺失。

XDocument doc = new XmlDocument();
        doc.Load(path);

EDIT

I have added:

if(File.Exists("D:\\BBConfig.xml"))

在加载之前,它找到了文件,但仍然报错。


通过 if (File.Exists(path)) 检查文件是否存在。 - Leo Chapiro
我加了一个“if”语句,它找到了,但仍然出现相同的错误。 - bahbah
你可以将文件读入字符串中,然后使用 LoadXml(string) 函数进行解析。 - Leo Chapiro
@duDE 我怎么能将它读取为字符串? - bahbah
已添加为答案,因为太长了不能作为评论 :) - Leo Chapiro
2个回答

3

首先,我认为用户3890766的回答非常好:“如果方法找不到文件,可能会抛出此异常”。但是,您仍然可以尝试以下方法:

    string strXml;
    try
    {
        using (StreamReader sr = new StreamReader("myXML.xml"))
        {
             strXml = sr.ReadToEnd();
        }

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(strXml);
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }

2
此异常可能会被抛出,如果方法找不到文件。您需要检查应用程序是否可以在给定路径找到文件,并且有权限读取它。
为了确保,您可以使用一个 Stream,并检查 Length。然后使用 XmlDocument.Load 与这个 Stream

谢谢您的回答,如果没有授权读取它,我该如何更改呢? - bahbah
@bahbah 你很可能在使用Windows系统,需要进入文件属性并检查安全选项卡中用户是否具有读取或读取和写入访问权限。 - mbernardeau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接