как проверить, присутствует ли значение узла, которое я хочу прочитать в xml

#xml #c#-4.0

#xml #c #-4.0

Вопрос:

Моя программа считывает значение из xml. Проблема в том, что иногда в xml появляется какое-то значение, а иногда значение не появляется. В это время я получаю object reference is not set an instant of object сообщение об ошибке. Поэтому я хочу, чтобы, если значение отсутствует в xml, значение, которое я не хочу присваивать какой-либо переменной. Ниже приведен мой код для вашего обзора.

 foreach (XElement AddressNode in ActivityLocationNode.Elements("Address"))
  {
   activitylocationtype.Address.City = AddressNode.Element("City").Value;
   activitylocationtype.Address.CountryCode = AddressNode.Element("CountryCode").Value;
   activity.ActivityLocation = activitylocationtype;
   activitylist.Add(activity);
   pakagetype.Activity = activitylist;
   pakagetypelist.Add(pakagetype);
   shipment.Package = pakagetypelist;
   shipmentlist.Add(shipment);
   trackresponse.Shipment = shipmentlist; }
  

XML, который я читаю, приведен ниже

 <Address>

  <CountryCode>GB</CountryCode>
</Address>
  

в коде появляется код страны, но сначала я читаю город. Итак, здесь я получаю ошибку. Спасибо вам за ваши комментарии.

Комментарии:

1. Просто проверьте, AddressNode.Element("City") равно null или нет перед назначением

Ответ №1:

Вместо доступа к Value свойству XElement , вы можете вместо этого привести его к string , чтобы избежать исключения, например :

 //this will give you null because <City> is not found, and no exception
activitylocationtype.Address.City = (string)AddressNode.Element("City");
activitylocationtype.Address.CountryCode = (string)AddressNode.Element("CountryCode");