× Linguagem de Programação ADVPL

Perguntas [RESOLVIDO] Verificar se atributo existe em objeto WS

Mais
11 anos 6 meses atrás #13194 por kanaamlrr
Bom dia a todos,
Estou desenvolvendo uma rotina com um WebService e apareceu um problema aqui e não estou conseguindo resolver.
No caso eu tenho no retorno do WebService que estou consumindo a seguinte estrutura:
oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS

Esse atributo _SP_LERMENSSAGENS quando retorna apenas 1 registro, retorna como objeto, e quando tem mais que 1 registro retorna como array, com isso eu fiz a seguinte tratativa que está funcionando corretamente.
If ValType(oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS)=="O"
	aAdd(aDados, oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS)
Else
	aDados := oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS
EndIf

Até ai tudo bem, mas quando não existe nenhum registro para retornar, o objeto retorna sem a propriedade _NEWDATASET, dessa forma

oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM

Gostaria de saber se alguém conhece uma forma que eu possa verificar se essa propriedade _NEWDATASET existe para o objeto _DIFFGR_DIFFGRAM.
Já tentei utilizando as funções ValType e Type e não tive sucesso, ele sempre retornou o erro de propriedade inválida.

Desde já agradeço a atenção.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 6 meses atrás #13205 por kanaamlrr
resolvi fazendo um count dos nodes filhos da seguinte forma:
If XmlChildCount(oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM) > 2
	If ValType(oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS)=="O"
		aAdd(aDados, oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS)
	Else
		aDados := oWs:oWsLerMensagensResult:_LerMensagensResult:_DIFFGR_DIFFGRAM:_NEWDATASET:_SP_LERMENSSAGENS
	EndIf
Else
	ConOut(PadC("Não existem atendimentos"	,50))  
EndIf

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.107 segundos
Joomla templates by a4joomla