Парсинг XML: В экземпляре объекта не задана ссылка на объект - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Я хочу разобраться с парсингом XML на примере конфигуратора маршрута. XML с маршрутами подгружается нормально, но при попытке получить значение какого-то атрибута вылетает ошибка "В экземпляре объекта не задана ссылка на объект.", хотя на самом деле такой атрибут есть и даже верно определяется. Правда поле "value" странно имеет значение "null". Скрины и XML прилагаю Код:
Листинг программы
  1. XmlDocument doc = new XmlDocument();
  2. doc.Load(path);
  3. //список маршрутов
  4. routeList = new List<Route>();
  5. //считываем список маршрутов из файла миссии
  6. int routeNum = 0;
  7. XmlNodeList routeNodes = doc.DocumentElement.SelectNodes("/mission/route");
  8. foreach (XmlNode routeNode in routeNodes)
  9. {
  10. routeList.Add(new Route(routeNode.Attributes["name"].Value,
  11. routeNode.Attributes["UID"].Value,
  12. routeNode.Attributes["FALSE"].Value));
  13. foreach (XmlNode pointNode in routeNode.ChildNodes)
  14. {
  15. routeList[routeNum].AddPoint(new Point(routeNode.Attributes["name"].Value,
  16. routeNode.Attributes["UID"].Value,
  17. Convert.ToDouble(routeNode.Attributes["longitude"].Value),
  18. Convert.ToDouble(routeNode.Attributes["latitude"].Value),
  19. Convert.ToDouble(routeNode.Attributes["altitude"].Value),
  20. routeNode.Attributes["velocity"].Value,
  21. Convert.ToInt32(routeNode.Attributes["cust_vel"].Value),
  22. routeNode.Attributes["pass"].Value,
  23. routeNode.Attributes["pass_alt"].Value));
  24. }
  25. routeNum ++;
  26. }
XML:
Листинг программы
  1. <mission name="box_small" UID="0x1" >
  2. <route name="Route Base" UID="0x342c09eb" cyclic="FALSE" >
  3. <waypoint name="StPnt 1" UID="0x1d27c981" longitude="-122.3573137" latitude="37.61349471" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  4. <waypoint name="StPnt 2" UID="0x5c384c03" longitude="-122.3581334" latitude="37.61335762" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  5. <waypoint name="StPnt 3" UID="0x4a42a93e" longitude="-122.3581696" latitude="37.61355105" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  6. <waypoint name="StPnt 4" UID="0x1ea4c1c5" longitude="-122.357339" latitude="37.61369515" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  7. </route>
  8. <route name="Route rotate" UID="0x342c10eb" cyclic="FALSE" >
  9. <waypoint name="StPnt 1" UID="0x1d27c981" longitude="-122.35749206" latitude="37.613886193" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  10. <waypoint name="StPnt 2" UID="0x5c384c03" longitude="-122.35813340" latitude="37.61335762" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  11. <waypoint name="StPnt 3" UID="0x4a42a93e" longitude="-122.35826146" latitude="37.61350703" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  12. <waypoint name="StPnt 4" UID="0x1ea4c1c5" longitude="-122.35761419" latitude="37.61404712" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  13. </route>
  14. <route name="Route transfer" UID="0x342c09eb" cyclic="FALSE" >
  15. <waypoint name="StPnt 1" UID="0x1d27c981" longitude="-122,3573499" latitude="37,61368814" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  16. <waypoint name="StPnt 2" UID="0x5c384c03" longitude="-122,3581696" latitude="37,61355105" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  17. <waypoint name="StPnt 3" UID="0x4a42a93e" longitude="-122,3582058" latitude="37,61374448" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  18. <waypoint name="StPnt 4" UID="0x1ea4c1c5" longitude="-122,3573752" latitude="37,61388858" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  19. </route>
  20. <route name="Route reverse" UID="0x342c09eb" cyclic="FALSE" >
  21. <waypoint name="StPnt 1" UID="0x1d27c981" longitude="-122.3573137" latitude="37.61349471" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  22. <waypoint name="StPnt 2" UID="0x5c384c03" longitude="-122.3581334" latitude="37.61335762" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  23. <waypoint name="StPnt 3" UID="0x4a42a93e" longitude="-122.3581696" latitude="37.61355105" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  24. <waypoint name="StPnt 4" UID="0x1ea4c1c5" longitude="-122.357339" latitude="37.61369515" altitude="50" velocity="cruise" pass="D" pass_alt="D" />
  25. </route>
  26. </mission>

Решение задачи: «Парсинг XML: В экземпляре объекта не задана ссылка на объект»

textual
Листинг программы
  1. routeList[routeNum].AddPoint(new Point(
  2.    ... ,
  3.    Convert.ToInt32(pointNode.Attributes["cust_vel"]),
  4.    ...
  5. ));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы