C# 为什么代码返回';对象引用未设置为对象的实例';错误?

C# 为什么代码返回';对象引用未设置为对象的实例';错误?,c#,xml,xmldocument,C#,Xml,Xmldocument,我尝试使用XmlDocument加载xml文件。但是,代码总是返回“对象引用未设置为对象实例”错误 namespace TestP2 { class Program { static void Main() { XmlDocument xd = new XmlDocument(); xd.Load(@"c:\1\1.xml"); XmlNodeList nodelist = xd.SelectNodes("E1/E2/E3");

我尝试使用XmlDocument加载xml文件。但是,代码总是返回“对象引用未设置为对象实例”错误

namespace TestP2
{
class Program
{
    static void Main()
    {
        XmlDocument xd = new XmlDocument();
        xd.Load(@"c:\1\1.xml");

        XmlNodeList nodelist = xd.SelectNodes("E1/E2/E3");
        foreach (XmlNode node in nodelist)
        {
            string test = "";
            test += node.Attributes.GetNamedItem("function").Value;
            Console.WriteLine(test);
        }
    }
}
}

我如何解决这个问题

您的“代码”之所以这样做,是因为存在对不存在的对象的引用。您可以通过调试并检查哪个对象引用此不存在的对象来解决此问题


对于XML,很可能找不到节点或属性。但是,如果没有完整的错误消息和XML,就不可能为您解决此问题。

您的“代码”会这样做,因为存在对不存在的对象的引用。您可以通过调试并检查哪个对象引用此不存在的对象来解决此问题


对于XML,很可能找不到节点或属性。但是,如果没有完整的错误消息和XML,就不可能为您解决此问题。

此代码到处都有漏洞,如果没有任何其他解释,任何这些都可能是原因

  • xd.SelectNodes(“E1/E2/E3”)
    是否返回值?如果返回null,则
    foreach
    语句将抛出异常
  • node.Attributes.GetNamedItem(“函数”)
    在任何情况下都返回null吗?如果是这样,那么当您请求
    .Value
    时,它将抛出异常
    这段代码到处都有漏洞,没有任何其他解释,其中任何一个都可能是原因

  • xd.SelectNodes(“E1/E2/E3”)
    是否返回值?如果返回null,则
    foreach
    语句将抛出异常
  • node.Attributes.GetNamedItem(“函数”)
    在任何情况下都返回null吗?如果是这样,那么当您请求
    .Value
    时,它将抛出异常
    我怀疑.Value可能为null或未初始化。请检查堆栈跟踪并验证。

    我怀疑.Value可能为null或未初始化。请检查堆栈跟踪并验证。

    是否可以显示有错误的堆栈。是否可以显示有错误的堆栈。