Почему коды возвращают ошибку «Ссылка на объект не установлена ​​на экземпляр объекта»? - PullRequest
0 голосов
/ 14 сентября 2011

Я пытаюсь использовать 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 ]

3 голосов
/ 14 сентября 2011

Этот код имеет уязвимость во всем, и без каких-либо объяснений, любой из них может быть причиной

  1. Возвращает ли xd.SelectNodes("E1/E2/E3") значение? Если он возвращает ноль, оператор foreach будет выдавать исключение.
  2. node.Attributes.GetNamedItem("function") возвращает ноль в любой ситуации? Если это так, то когда вы запросите .Value, он выдаст исключение.
2 голосов
/ 14 сентября 2011

Ваши «коды» делают это, потому что существует ссылка на объект на то, чего не существует.Это можно решить путем отладки и проверки того, какой объект ссылается на этот несуществующий объект.

В случае XML очень вероятно, что узлы или атрибуты не могут быть найдены.Однако без полного сообщения об ошибке и XML невозможно решить эту проблему за вас.

1 голос
/ 14 сентября 2011

Я подозреваю, что. Значение может быть нулевым или не инициализировано.Пожалуйста, проверьте трассировку стека и проверьте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...