powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как проверить есть ли такой элемент
4 сообщений из 4, страница 1 из 1
Как проверить есть ли такой элемент
    #38644353
Доброе время суток.
Вытаскиваю данные так -
loXML = CREATEOBJECT("MSXML.DOMDocument")
loXML.load(t_xml)
loXMLNodes=loXML.getElementsByTagName("GIN")
IF loXML.parseError.errorCode = 0
For i = 0 TO (loXMLNodes.length -1)

lonodes=loXMLNodes.nextNode

lonodes2=lonodes.childNodes.nextNode
mENP=loNodes2.getAttributeNode("NOMER").text
Вот тут загвоздка - бывает что называется NOMER а бывает что NUMBER. Как проверить есть ли такой нод (NOMER), если есть то взять значение, а если NUMBER, то соответственно взять его значение.
...
Рейтинг: 0 / 0
Как проверить есть ли такой элемент
    #38644717
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас нет возможности проверить, но, "на вскидку"

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
* Вариант 1

if loNodes2.hasAttribute("NOMER")
    mENP=loNodes2.getAttributeNode("NOMER").text
endif

* Вариант 2

Local loNodeAttr
loNodeAttr = loNodes2.getAttributeNode("NOMER")
if isnull(loNodeAttr) = .F.
    mENP=loNodeAttr.text
endif



Наконец, самый надежный вариант - это "тупо" перебирать в цикле вообще ВСЕ атрибуты узла. Ведь узла NOMER или NUMBER банально может не быть вообще. В синтаксисе не уверен, но должно быть нечто вроде

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Local loAttr
for each loAttr in loNodes2.Attributes
  do case
  case inlist(upper(loAttr.Name), "NOMER", "NUMBER")

  case ...
  otherwise
  endcase
endfor
...
Рейтинг: 0 / 0
Как проверить есть ли такой элемент
    #38644743
ВладимирМСейчас нет возможности проверить, но, "на вскидку"

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
* Вариант 1

if loNodes2.hasAttribute("NOMER")
    mENP=loNodes2.getAttributeNode("NOMER").text
endif

* Вариант 2

Local loNodeAttr
loNodeAttr = loNodes2.getAttributeNode("NOMER")
if isnull(loNodeAttr) = .F.
    mENP=loNodeAttr.text
endif




Первый вариант - нет... там вообще нет такого как hasAttribute , первым делом это попробовал =((
Второй вариант даст ошибку так как вообще нельзя делать никаких операций с несуществующим именем нода. Именно ошибку которую не перехватить просто.
Со перебором сейчас попробую повозится. Спасибо.
...
Рейтинг: 0 / 0
Как проверить есть ли такой элемент
    #38644746
Вообщем пока сделал проще... исходя из того, что нод может обзываться по разному, но позиция одна
loNodes2.attributes.item(2).text и дает содержимое, не привязанное к имени. Пока буду так.
Спасибо еще раз. Перебор все равно буду мучать - пригодится =)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как проверить есть ли такой элемент
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]