Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#xmldocument加载访问冲突_C#_Xml_Winforms_Visual Studio_Code Behind - Fatal编程技术网

c#xmldocument加载访问冲突

c#xmldocument加载访问冲突,c#,xml,winforms,visual-studio,code-behind,C#,Xml,Winforms,Visual Studio,Code Behind,我试图在windows窗体应用程序的代码隐藏中从c#加载xml文件。这是我使用的代码: XmlDocument xdoc = new XmlDocument(); xdoc.Load("file.xml"); foreach (XmlNode obj in xdoc.SelectNodes("/enabledobjects/object/*")) { RadListDataItem item = new R

我试图在windows窗体应用程序的代码隐藏中从c#加载xml文件。这是我使用的代码:

        XmlDocument xdoc = new XmlDocument();
        xdoc.Load("file.xml");

        foreach (XmlNode obj in xdoc.SelectNodes("/enabledobjects/object/*"))
        {
            RadListDataItem item = new RadListDataItem();

            item.Text = obj["objectname"].InnerText;
            item.Value = obj["value"].InnerText;

            DropDownList.Items.Add(item);
        }
当我运行调试程序时,代理没有错误。程序会像应该的那样启动几秒钟。然后,它会发出咔嗒声并完成调试。Visual Studio显示以下消息:

The program '[6728] Daten Archivar.vshost.exe: Managed (v4.0.30319)' has exited with code -1073741819 (0xc0000005) 'Access violation'.
我有完全的管理员权限。文件保存在同一文件夹中,exe保存时每个人都具有完全访问权限。我不知道为什么我不能访问它

xml文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<enabledobjects>
    <object>
      <objectname>John</objectname>
      <value>Carter</value>
    </object>
</enabledobjects>

约翰
卡特

确保代码中没有松散的引用。 以防您试图打开已锁定的文件。
否则,请尝试“清洁解决方案”,然后在Visual Studio中“重建”,然后重试。

好的,这确实是一个严重的错误。发生错误的原因是xpath错误:

foreach (XmlNode obj in xdoc.SelectNodes("/enabledobjects/object/*"))
    {

     RadListDataItem item = new RadListDataItem();
     item.Text = obj["objectname"].InnerText;
通过这样的循环,我们尝试使用
obj[“objectname”].InnerText
访问
John
的“objectname”子对象

解决此问题的方法很简单:

foreach (XmlNode obj in xdoc.SelectNodes("/enabledobjects/object"))
    {

     RadListDataItem item = new RadListDataItem();
     item.Text = obj["objectname"].InnerText;
通过删除/*我们将
定义为xmlNode对象


因此,创建访问冲突是因为我们想要读取innerText的子级根本不存在。希望这对某些人有所帮助。

您是否尝试过使用VS调试器调试代码?设置断点并单步执行。似乎您正在访问一个未正确初始化的对象,如果有…DropDownList不是类名吗。。。不应该是像dropDownList1.Items.Add这样的东西…当我一步一步地浏览它时,它会出现在item.Text=obj[“objectname”].InnerText;但obj填写正确且不为空。问题不能是item.Text,因为当我尝试使用item.Text=“”;节目works@colosso
item.Text=”“
item.Text=null
不同。我不认为
XmlDocument
实现了
IDisposable