【问题标题】:c# xmldocument load access violationc# xmldocument加载访问冲突
【发布时间】:2013-02-27 16:51:20
【问题描述】:

我正在尝试在 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);
        }

当我运行调试程序时,我没有错误。程序按应有的方式启动了几秒钟。然后它carashes并完成调试。 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>

【问题讨论】:

  • 您是否尝试过使用 VS-debugger 调试您的代码?设置断点并单步执行。看来您正在访问一个未正确初始化的对象,如果有的话......
  • DropDownList 不是类名吗? ...不应该像 dropDownList1.Items.Add ...
  • 当我逐步浏览它时,它会在 item.Text = obj["objectname"].InnerText;但 obj 已正确填充且不为空。问题不能是 item.Text 因为当我尝试使用 item.Text="";该程序有效
  • @colosso item.Text=""item.Text=null 不同。

标签: c# xml winforms visual-studio code-behind


【解决方案1】:

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

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

     RadListDataItem item = new RadListDataItem();
     item.Text = obj["objectname"].InnerText;

通过这样的循环,我们尝试使用obj["objectname"].InnerText 来访问&lt;objectname&gt;John&lt;/objectname&gt; 的“objectname”子级。

这个问题的解决方法很简单:

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

     RadListDataItem item = new RadListDataItem();
     item.Text = obj["objectname"].InnerText;

通过删除 /* 我们将 &lt;object&gt; 定义为 xmlNode 对象。

所以创建了访问冲突,因为我们想要读出 innerText 的孩子从未存在过。希望这对某人有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我不认为 XmlDocument 实现 IDisposable
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多