c#xmldocument加载访问冲突
我试图在windows窗体应用程序的代码隐藏中从c#加载xml文件。这是我使用的代码: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
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