Member 11403304 Ответов: 1

Как проверить, начинается ли значение элемента XML с CONF?


Мне нужна помощь, чтобы проверить xml-элемент для нескольких условий в VB.NET код.
1. Если элемент SecurityGroup не существует: установите значение IsConfidential в ‘false’
2. Если элемент SecurityGroup существует: установите для IsConfidential значение ‘true’, когда @Word начинается с CONF
3. В противном случае-значение IsConfidential в ‘false’

Как мне это сделать?

У меня возникли проблемы с утверждениями if. Я могу проверить, не существует ли элемент SecurityGroup, и установить IsConfidential в False.
Я не умею делать числа 2 и 3

Вот XML-элемента
<SecurityGroup Word="CONFGUA">Conf-Guardianship</SecurityGroup>


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

Dim objInsertUpdateCase As MMGService.InsertUpdateCase = New MMGService.InsertUpdateCase

If aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/SecurityGroup") Is Nothing Then
   objInsertUpdateCase.IsConfidential = False
ElseIf Not aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/SecurityGroup/@Word").InnerText.StartsWith("CONF") Then 'CONF' Is Nothing Then
    objInsertUpdateCase.IsConfidential = True
Else
   objInsertUpdateCase.IsConfidential = False
End If

1 Ответов

Рейтинг:
12

Richard Deeming

Вы можете сделать это с помощью одного запроса XPath:

objInsertUpdateCase.IsConfidential = aobjXmlInputDoc.DocumentElement.SelectSingleNode("Case/SecurityGroup[starts-with(@Word, 'CONF')]") IsNot Nothing


Member 11403304

Поэтому я могу использовать ваш код в операторе if, а затем сказать else objInsertUpdateCase.IConfonfidentail = False

Richard Deeming

Вам это не нужно - он делает все это в одной строке.

* Если SecurityGroup элемент не существует, он устанавливает IsConfidential к False;
* Если Word атрибут не существует, он устанавливает IsConfidential к False;
* Если Word атрибут не начинается с "CONF", он устанавливает IsConfidential к False;
* В противном случае он устанавливает IsConfidential к True;