Member 11403304 Ответов: 1

Как исправить ссылку на объект, не заданную для экземпляра объекта?


Я получаю CompletedDate из имени элемента XML - документа CompDate. Это необязательный элемент. Если XML - документ содержит элемент CompDate, то мой VB.NET код работает. Однако когда XML-документ не имеет элемента CompDate, я получаю ссылку на объект, не установленную на экземпляр объекта?

Как это исправить, чтобы он работал независимо от того, существует ли элемент CompDate в XML-документе?

XML-документ

<Integration>
   <Case>
     <CaseEvent ID="252949395">
	<CompDate>06/01/2019</CompDate>
     </CaseEvent>
   </Case>
   <IntegrationConditions>
      <IntegrationCondition>
	 <NotificationEvent elementKey="252949395">InsertPWBRorAOS</NotificationEvent>
      </IntegrationCondition>
   </IntegrationConditions>
</Integration>


Что я уже пробовал:

VB.NET код
Dim strEventId As String

strEventId = aobjxmlNotificationEventNode.SelectSingleNode("@elementKey").InnerText

objInsertPWBRorAOS.CompletedDate = CDate(aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/CaseEvent[@ID=" + strEventId + "]/CompDate").InnerText)

1 Ответов

Рейтинг:
9

Patrice T

Цитата:
Как это исправить, чтобы он работал независимо от того, существует ли элемент CompDate в XML-документе?

Довольно просто: либо вы проверяете, что элемент существует, прежде чем читать его значение, либо Вы читаете значение временной переменной и проверяете, является ли переменная ожидаемым объектом или ничего, прежде чем хранить значение.
Мне бы это понравилось:
Tmp= CDate(aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/CaseEvent[@ID=" + strEventId + "]/CompDate").InnerText)
If Tmp Is Nothing Then objInsertPWBRorAOS.CompletedDate = Tmp


Member 11403304

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

Patrice T

Спасибо