Как исправить 'System.NullReferenceException:' Ссылка на объект не установлена ​​для экземпляра объекта. ' - PullRequest
1 голос
/ 29 мая 2019

Я новичок в Xml и Linq, и я изучал на youtube руководство по его использованию.

Ссылка на видео: https://www.youtube.com/watch?v=OsfVJ485RY4

Проблема в том, что когда я запускаю код для изменения или удаления значения, я всегда получаю следующую ошибку:

System.NullReferenceException: 'Object reference not set to an instance of an object.'

System.Xml.Linq.XElement.Attribute(...) returned null.

Прежде всего я загружаю свой документ:

XDocument xmlDocument = XDocument.Load(@"C:\Users\matpl\source\repos\LinqToXML\LinqToXML\Data.xml");

Часть, в которой я хочу изменить значение XML-документа

xmlDocument.Element("Students")
           .Elements("Student")
           .Where(x => x.Attribute("Id").Value == "101").FirstOrDefault()
           .SetElementValue("TotalMarks", "999");

Когда я хочу удалить элемент:

xmlDocument.Root.Elements().Where(x => x.Attribute("Id").Value == "104").Remove();

XML-файл:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--Comment Updated-->
<Students>
  <Student>
    <Student Id='101'>
      <Name>Mark</Name>
      <Gender>Male</Gender>
      <TotalMarks>800</TotalMarks>
    </Student>
    <Student Id='102'>
      <Name>Rosy</Name>
      <Gender>Female</Gender>
      <TotalMarks>900</TotalMarks>
    </Student>
    <Student Id='103'>
      <Name>Pam</Name>
      <Gender>Female</Gender>
      <TotalMarks>850</TotalMarks>
    </Student>
    <Student Id='104'>
      <Name>John</Name>
      <Gender>Male</Gender>
      <TotalMarks>950</TotalMarks>
    </Student>
  </Student>
  <Student Id='105'>
    <Name>Todd</Name>
    <Gender>Male</Gender>
    <TotalMarks>980</TotalMarks>
  </Student>
</Students>

Спасибо,

1 Ответ

0 голосов
/ 29 мая 2019

Существует еще один элемент Student между Students и Student-101. Похоже, у вас неправильный XML:

<Students>
  <Student> //WHAT IS IT?
    <Student Id='101'>
      <Name>Mark</Name>
      <Gender>Male</Gender>
      <TotalMarks>800</TotalMarks>
    </Student>
    <Student Id='102'>
      <Name>Rosy</Name>
      <Gender>Female</Gender>
      <TotalMarks>900</TotalMarks>
    </Student>
    <Student Id='103'>
      <Name>Pam</Name>
      <Gender>Female</Gender>
      <TotalMarks>850</TotalMarks>
    </Student>
    <Student Id='104'>
      <Name>John</Name>
      <Gender>Male</Gender>
      <TotalMarks>950</TotalMarks>
    </Student>
  </Student> //WHAT IS IT?
  <Student Id='105'>
    <Name>Todd</Name>
    <Gender>Male</Gender>
    <TotalMarks>980</TotalMarks>
  </Student>
</Students>

Проверьте это https://dotnetfiddle.net/14js9r. Работает без ошибок с правильным xml.

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