为什么代码返回'对象引用没有设置为对象的实例'错误?

时间:2011-09-14 08:07:37

标签: 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");
        foreach (XmlNode node in nodelist)
        {
            string test = "";
            test += node.Attributes.GetNamedItem("function").Value;
            Console.WriteLine(test);
        }
    }
}
}

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

此代码存在漏洞,并且没有任何其他解释,其中任何一个都可能是原因。

  1. xd.SelectNodes("E1/E2/E3")会返回一个值吗?如果它返回null,则foreach语句将抛出异常。
  2. node.Attributes.GetNamedItem("function")在任何情况下都会返回null吗?如果是这样,那么当您请求.Value时,它将抛出异常。

答案 1 :(得分:2)

你的'代码'是这样做的,因为有一个对象引用不存在的东西。您可以通过调试和检查哪个对象引用此不存在的对象来解决此问题。

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

答案 2 :(得分:1)

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