Member 11403304 Ответов: 0

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


Мне нужна помощь в создании переменной для хранения 3 телефонных объектов (например, objxmlHomePhone, objxmlCellPhone, objxmlWorkPhone).
Мои 3 объекта заполняются из xml - документа, который я добавил ниже.
Проблема, которую я имею с моим vb-кодом, заключается в том, что когда xml-документ не имеет телефонных элементов, мой вывод показывает пустые элементы. Я не хочу показывать пустые элементы.

Следующая строка кода выполняет обновление и отвечает за отображение элементов. objUpdateParty.Телефоны = {objxmlHomePhone, objxmlCellPhone, objxmlWorkPhone}

Для каждого кода я пытаюсь использовать переменную для 3 телефонных объектов. Я надеялся, что смогу проверить, есть ли у каждого телефонного объекта номер. Если это не так, то обновление кода должно игнорировать этот объект телефона. Вот тут-то мне и нужна помощь.

Вот вывод моего кода. Вы можете видеть, что первый элемент телефона не имеет типа или номера. Я не хочу, чтобы это появилось.

<?xml version="1.0"?>
<Phones>
	<Phone>
		<Type xsi:nil="true"/>
	</Phone>
	<Phone>
		<Number>223-789-6654</Number>
		<Type>Cell</Type>
	</Phone>
	<Phone>
		<Number>224-178-2222</Number>
		<Type>Work</Type>
	</Phone>
</Phones>


Вот мой Xml-документ, который в vb - коде является objXmlPartyNode В этом xml-документе есть два телефонных номера.

<?xml version="1.0" encoding="UTF-8"?>
  <Phone Op="A" Current="true">
	<Type Op="A" Word="CELL">Cell</Type>
	<Number Op="A">223-789-6654</Number>
  </Phone>
  <Phone Op="A" Current="true">
	<Type Op="A" Word="WORK">Work</Type>
	<Number Op="A">224-178-2222</Number>
   </Phone>
<!--<Phone Op="A" Current="true">
	<Type Op="A" Word="HOME">Home</Type>
	<Number Op="A">225-789-6654</Number>
  </Phone>-->


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

Вот код. Я читаю xml-документ, чтобы получить телефонные номера

Dim objxmlHomePhone As New MMGService.Phone()
Dim objxmlCellPhone As New MMGService.Phone()
Dim objxmlWorkPhone As New MMGService.Phone()
Dim objxmlPhones() As Object = {objxmlHomePhone, objxmlCellPhone, objxmlWorkPhone}
Dim objxmlPhoneNode As XmlNode

'Home phone
objxmlPhoneNode = objXmlPartyNode.SelectSingleNode("Phone[@Current='true' and Type/@Word='HOME']")
  If Not objxmlPhoneNode Is Nothing Then
        objxmlHomePhone.Type = MMGService.PhoneNumberTypes.Home
    If Not objxmlPhoneNode.SelectSingleNode("Number") Is Nothing Then
        objxmlHomePhone.Number = objxmlPhoneNode.SelectSingleNode("Number").InnerText
    End If
  End IF
'Work phone
objxmlPhoneNode = objXmlPartyNode.SelectSingleNode("Phone[@Current='true' and Type/@Word='WORK']")
  If Not objxmlPhoneNode Is Nothing Then
    objxmlWorkPhone.Type = MMGService.PhoneNumberTypes.Work
    If Not objxmlPhoneNode.SelectSingleNode("Number") Is Nothing Then
      objxmlWorkPhone.Number = objxmlPhoneNode.SelectSingleNode("Number").InnerText
    End If
 End If

'Cell phone
 objxmlPhoneNode = objXmlPartyNode.SelectSingleNode("Phone[@Current='true' and Type/@Word='CELL']")
   If Not objxmlPhoneNode Is Nothing Then
      objxmlCellPhone.Type = MMGService.PhoneNumberTypes.Cell
      If Not objxmlPhoneNode.SelectSingleNode("Number") Is Nothing Then
        objxmlCellPhone.Number = objxmlPhoneNode.SelectSingleNode("Number").InnerText
      End If
   End If
For Each objxmlPhone As Object In objxmlPhones
   If Not objxmlPhones Is Nothing Then
'This is where the update is done. When an object has no phone number, it is still updated i.e still shows up an an empty element. I do not want this to happen
    objUpdateParty.Phones = {objxmlHomePhone, objxmlCellPhone, objxmlWorkPhone}
   End If
Next

0 Ответов