我正在尝试从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>
答案 0 :(得分:1)
好的,这真是个错误。发生错误是因为xpath错误:
foreach (XmlNode obj in xdoc.SelectNodes("/enabledobjects/object/*"))
{
RadListDataItem item = new RadListDataItem();
item.Text = obj["objectname"].InnerText;
通过这样循环,我们尝试使用obj["objectname"].InnerText
来访问<objectname>John</objectname>
的“objectname”子项。
解决这个问题的方法很简单:
foreach (XmlNode obj in xdoc.SelectNodes("/enabledobjects/object"))
{
RadListDataItem item = new RadListDataItem();
item.Text = obj["objectname"].InnerText;
通过删除/ *我们将<object>
定义为xmlNode对象。
因此创建了访问冲突因为孩子,我们想要读出innerText,从未存在过。希望这可以帮助某人。
答案 1 :(得分:0)
确保您没有在代码中保留引用。 以防您尝试打开已锁定的文件。 否则,只需尝试“清理解决方案”,然后在Visual Studio中“重建”,然后再试一次。