При добавлении узла в XML генерируется NullReferenceException - C#

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

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

Доброго для. Пытаюсь добавить новый элемент в xml файл, что что-то происходит не так, не могу понять.
Листинг программы
  1. NullReferenceException: Object reference not set to an instance of an object
  2. TooltipXml.addElementXml (System.String lg, System.String ID, System.String toolTip, System.String txt) (at Assets/Scripts/TooltipXml.cs:52)
  3. TooltipXml.EditElementXmlToolTip (System.String ID, System.String toolTipText, System.String local, System.String xmlPath) (at Assets/Scripts/TooltipXml.cs:93)
  4. TooltipManager.CreateWindow () (at Assets/Scripts/TooltipManager.cs:203)
  5. TooltipManager.OnGUI () (at Assets/Scripts/TooltipManager.cs:141)
Вот сам код добавления элемента
Листинг программы
  1. //добавление элемента
  2. public void addElementXml(string lg, string ID, string toolTip, string txt)
  3. {
  4. XmlElement xRoot = xDoc.DocumentElement;
  5. // создаем новый элемент
  6. XmlElement element = xDoc.CreateElement("element");
  7. // создаем атрибуты
  8. XmlAttribute idAttrEl = xDoc.CreateAttribute("id");
  9. // создаем элемент localization
  10. XmlElement localizationElem = xDoc.CreateElement("localization");
  11. // создаем атрибуты для localization
  12. XmlAttribute langAttr = xDoc.CreateAttribute("lang");
  13. XmlAttribute tooltipgAttr = xDoc.CreateAttribute("tooltip");
  14. XmlAttribute textAttr = xDoc.CreateAttribute("text");
  15. // создаем текстовые значения для элементов и атрибутов
  16. XmlText id = xDoc.CreateTextNode(ID);
  17. XmlText lang = xDoc.CreateTextNode(lg);
  18. XmlText tooltipText = xDoc.CreateTextNode(toolTip);
  19. XmlText text = xDoc.CreateTextNode(txt);
  20. //добавляем узлы и атрибуты
  21. idAttrEl.AppendChild(id);
  22. element.Attributes.Append(idAttrEl);
  23. langAttr.AppendChild(lang);
  24. localizationElem.Attributes.Append(langAttr);
  25. tooltipgAttr.AppendChild(tooltipText);
  26. localizationElem.Attributes.Append(tooltipgAttr);
  27. textAttr.AppendChild(text);
  28. localizationElem.Attributes.Append(textAttr);
  29. //localizationElem.AppendChild(tooltipText);
  30. element.AppendChild(localizationElem);
  31. xRoot.AppendChild(element);
  32. }
Метод вызывается тут
Листинг программы
  1. public void EditElementXmlToolTip(string ID, string toolTipText, string local, string xmlPath)
  2. {
  3. string pathX = @"/root/element[@id='" + ID + @"']/localization[@lang='" + local + @"']";
  4. string path_id = @"/root/element[@id='" + ID + @"']";
  5. XmlDocument xmlDoc = new XmlDocument();
  6. xmlDoc.Load(xmlPath);
  7. if (xmlDoc.SelectSingleNode(path_id) != null && xmlDoc.SelectSingleNode(pathX) != null)
  8. {
  9. Debug.Log("yes");
  10. XmlNode localizationElement = xmlDoc.SelectSingleNode(pathX);
  11. localizationElement.Attributes["tooltip"].Value = toolTipText;
  12. xmlDoc.Save(xmlPath);
  13. }
  14. else
  15. {
  16. Debug.Log("no, so create new element of xml");
  17. addElementXml(local, ID, toolTipText, ""); // это он
  18. xmlDoc.Save(xmlPath);
  19. }
В чём проблема? Раньше добавлял данные без проблем, что сей час не так?

Решение задачи: «При добавлении узла в XML генерируется NullReferenceException»

textual
Листинг программы
  1. public void addElementXml(string lg, string ID, string toolTip, string txt)
  2. {
  3.     XmlElement element = xDoc.CreateElement("element");
  4.     element.SetAttribute("id", ID);
  5.  
  6.     XmlElement localizationElem = xDoc.CreateElement("localization");
  7.     localizationElem.SetAttribute("lang", lg);
  8.     localizationElem.SetAttribute("tooltip", toolTip);
  9.     localizationElem.SetAttribute("text", txt);
  10.  
  11.     element.AppendChild(localizationElem);
  12.     xDoc.DocumentElement.AppendChild(element);
  13. }

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


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

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

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

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

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

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