Função XmlChildEx

Bom dia, estou tentando fazer uma validação na importação do XML para ele verificar se existe a tag que pode ou não vir no XML. Caso o XML tenha a tag, funciona perfeitamente, porém se não tiver dá erro de variável não existente.

Estou usando a função XmlChildEx porém não está funcionando, tendo ou não a tag ele está retornando "Nil". Segue abaixo a linha:

cF2_TPFRETE := IIF(XmlChildEx(oXml:_nfeProc:_NFe:_InfNfe:_transp,"_modFrete") !=NIL,ALLTRIM(oXml:_nfeProc:_NFe:_InfNfe:_transp:_modFrete:Text),0) //Tipo frete

compartilhar
  • Bom dia Miriam, que erro ocorre? o XML sempre tem a estrutura _transp, mesmo quando o modFrete não existe? Coloque os exemplos de código e XML que está utilizando, por favor.

    Daniel Mendes   26 de Aug de 2019
  • Pode existir ou não a tag, se trata do xml da NFe. Algumas tags não aparecem dependendo da situação. Então utilizei o IF, Se na função XmlChildEx retornar true, ele me traz o valor da tag, senão se for igual a NIL me retorna 0. Essa função XmlChildEx serve para verificar se a tag existe, e debugando o fonte de fato existe, o retorno do IF deveria ser true. Porém existindo ou não a tag ele retorna NIL.

    Miriam Félix   26 de Aug de 2019
  • No xml que estou importando existe a tag: transp> modFrete>1 xNome>PAULINERIS TRANS. E ENCOMENDAS LTDA xEnder>RUA JUCA CASTELO, xMun>SANTA RITA DO SAPUCAI UF>MG /transporta>) se debugo o código eu consigo atribuir o valor da tag a uma variável, consigo ver que existe um valor, mas como existe esse condição do IF e minha função XmlChildEx esta retornando NIL, ele atribui o valor 0 ao cF2_TPFRETE do exemplo. Se existe a tag pq retorna NIL?

    Miriam Félix   26 de Aug de 2019
  • Por favor, consegue anexar o fonte e o XML? Existem muitas pessoas que fazem um TYPE do XML, mas isso causa uma grande perda de performance.

    Daniel Mendes   26 de Aug de 2019
  • Inclui os anexos.

    Miriam Félix   26 de Aug de 2019
Mostrar todos os 6 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl xml ou faça a sua própria pergunta.