Member 11403304 Ответов: 1

Как я могу проверить, если первый элемент статуса от protectionorder родительский узел равен первому элементу статус mnprotectionorderadditional родительского узла?


Я хотел бы проверить, если первый статус в ProtectionOrder с ОП="A" или "e" - это же как первое состояние в MNProtectionOrderAdditional с ОП="А" или "Е".

Если они не равны, я брошу системную ошибку, как этот бросок новой системы.Исключение("статусы не синхронизированы. Вкладка "Сведения" не соответствует статусу дополнительной вкладки.")

Как это сделать, используя оператор if в VB.Net-что?

В моем Vb.Net код, xml-документ находится в aobjXmlInputDoc объект. Поэтому чтобы получить элемент статуса я сделаю это следующим образом

На простом английском языке моя логика будет выглядеть так
Если первый статус с Op=A или E от ProtectionOrder <> до первого статуса от MNProtectionOrderAdditional, то
Бросьте Новую Систему.Исключение("статусы не синхронизированы. Вкладка "Сведения" не соответствует статусу дополнительной вкладки.")
Конец, Если


Вот мой xml-документ.
<Integration>
	<ProtectionOrder>

		<Statuses>
			<Status Op="A">
				<Current>true</Current>
				<Active>No</Active>
				<Date Op="A">12/13/2018</Date>
				<Type Op="A" Word="EXPIRED">Expired</Type> 
			</Status>
			<Status>
				<Current>false</Current>
				<Active>Yes</Active>
				<Date>12/13/2016</Date>
				<Type Word="SBJO">Signed By Judicial Officer</Type>
			</Status>
			<Status>
				<Current>false</Current>
				<Active>No</Active>
				<Date>12/13/2016</Date>
				<Type Word="DRAFT">Draft</Type>
			</Status>
		</Statuses>

		<MNProtectionOrderAdditional>
			<Statuses>
				<Status Op="A">
					<Current>false</Current>
					<Active>No</Active>
					<Date Op="A">12/13/2018</Date>
					<Type Op="A" Word="EXPIRED">Expired</Type>
				</Status>
				<Status>
					<Current>false</Current>
					<Active>Yes</Active>
					<Date>12/13/2016</Date>
					<Type Word="SBJO">Signed By Judicial Officer</Type>
				</Status>
				<Status>
					<Current>true</Current>
					<Active>No</Active>
					<Date>12/13/2016</Date>
					<Type Word="DRAFT">Draft</Type>
				</Status>
			</Statuses>


		</MNProtectionOrderAdditional>
	</ProtectionOrder>
</Integration>


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

Это то, что я пытаюсь сделать, но мне нужна помощь.

In VB.Net I am not sure how to do it. This is where I need help.

If aobjXmlInputDoc.DocumentElement.SelectSingleNode("Integration/ProtectionOrder/Statuses/Status[1]/@Op") <> aobjXmlInputDoc.DocumentElement.SelectSingleNode ("Integration/ProtectionOrder/MNProtectionOrderAdditional/Statuses/Status[1]/@Op") Then
 Throw New System.Exception("Statuses out of sync.  The detail tab does Not match the additional tab status.")
End If

1 Ответов

Рейтинг:
1

Richard Deeming

Метод selectsinglenode[^] возвращает узел XmlNode[^] объект. То XmlNode класс не реализует операторы равенства, поэтому вы выполняете сравнение ссылок. Поскольку эти два узла не являются одним и тем же экземпляром, они не равны друг другу, и ваш код всегда будет выдавать исключение.

Сравните узлы' Свойство value[^] вместо.

If aobjXmlInputDoc.DocumentElement.SelectSingleNode("Integration/ProtectionOrder/Statuses/Status[1]/@Op").Value <> aobjXmlInputDoc.DocumentElement.SelectSingleNode ("Integration/ProtectionOrder/MNProtectionOrderAdditional/Statuses/Status[1]/@Op").Value Then