Importação xml array

Bom dia, teoricamente quando importo o xml e ele possui apenas um item ele vem como string e quando tem mais de um item vem como array, e a validação seria assim:

If Valtype('oXml:_nfeProc:_NFe:_InfNfe:_DET[_nX]') == 'A' nItens := Len(oXml:_nfeProc:_NFe:_InfNfe:_det) else XmlNode2Arr(oXml:_nfeProc:_NFe:_InfNfe:_det,"_det") nItens := Len(oXml:_nfeProc:_NFe:_InfNfe:_det) Endif

Devo estar validando errado por que sempre retorno valtype == 'C'

Olá Miriam, bom dia!

Já tentou a função Type (https://tdn.totvs.com/display/tec/Type) ?

Basicamente a diferença entre elas é a seguinte:

  • ValType valida o dado ou a variável

Ex.:


cVar := "TESTE"

IF ValType(cVar) == "C"
...

  • Type valida a expressão

Ex.:


xVar := "TESTE"

Type( "xValue" ) // Resultado: "C" - Caracter

Type retorna ‘U’ para todos

se tem apenas 1 item é objeto e se tem mais de um item é array, mas como identifico isso no código?

foi bobeira minha. Valtype(oXml:_nfeProc:_NFe:_InfNfe:_DET) == ‘A’ deu certo

dei bobeira. Valtype(oXml:_nfeProc:_NFe:_InfNfe:_DET) == 'A' deu certo