Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
April 13–15 - Dare to Unleash a New Professional You at Qlik Connect 2026: Register Now!
cancel
Showing results for 
Search instead for 
Did you mean: 
Thiago_Justen_

Extraindo campos de tags XML

Srs,

Estou com uma dúvida acerca de qual seria a melhor solução para a minha questão que segue:

Tenho um app que captura os xml's de notas fiscais de abastecimento e os "traduz" conforme script abaixo:

LOAD "XML",

TextBetween(XML,'KM:','.') as [NFe Abast - KM],

        TextBetween(XML,'PLACA:','KM:') as [NFe Abast - Placa],

        TextBetween(XML,'<chNFe>','</chNFe>') as [NFe Abast - Chave de Acesso],

        TextBetween(XML,'<vUnCom>','</vUnCom>') as [NFe Abast - Valor Unitario],

        len(TextBetween(XML,'<vUnCom>','</vUnCom>'))    as [Nfe Abast - Un. Medida],

        TextBetween(XML,'<vProd>','</vProd>') as [NFe Abast - Valor Total],

        TextBetween(XML,'<uCom>','</uCom>') as [NFe Abast - Un Medida],

        TextBetween(XML,'<xProd>','</xProd>') as [NFe Abast - Produto],

        TextBetween(XML,'<nNF>','</nNF>') as [NFe Abast - Numero],

        TextBetween(XML,'<xNome>','</xNome>') as [NFe Abast - Emitente Razao Social],

        TextBetween(XML,'<xFant>','</xFant>') as [NFe Abast - Emitente Nome Fantasia],

        TextBetween(XML,'<qCom>','</qCom>') as [NFe Abast - Quantidade],

        date(SubField(TextBetween(XML,'<dhEmi>','</dhEmi>'),'T',1)) as [NFe Abast - Data Emissao],

        Year((SubField(TextBetween(XML,'<dhEmi>','</dhEmi>'),'T',1))) as [NFe Abast - Ano Emissao],

        Month((SubField(TextBetween(XML,'<dhEmi>','</dhEmi>'),'T',1))) as [NFe Abast - Mes Emissao],

        Day((SubField(TextBetween(XML,'<dhEmi>','</dhEmi>'),'T',1))) as [NFe Abast - Dia Emissao],

        Time(SubField(SubField(TextBetween(XML,'<dhEmi>','</dhEmi>'),'T',2),'-',1),'hh:mm') as [NFe Abast - Hora Emissao],

        TextBetween(XML,'<xMotivo>','</xMotivo>') as [NFe Abast - Status]

FROM [lib://CARGA/NOTAS_ABASTECIMENTO.qvd](qvd);

Até aí tudo funciona "de boa" se, e somente se, a nota contiver  apenas um item (o que ocorre em 99% dos casos que temos). Esse 1% é que me arrebenta...

Vejam como o xml da NF vem quando há mais de um item:

item 1.PNG

item 2.PNG

Eis então minha questão:

Como fazer a leitura desses dois itens, considerando que as tags que utilizo são as mesmas nos dois itens?

cleveranjos‌, afurtado‌, stalwar1

Abs e Sucesso!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Labels (1)
21 Replies
pablolabbe
Partner Ambassador
Partner Ambassador

Obrigado pelo agradecimento Thiago.

Confesso que faz dias que vi tua postagem e fiquei pensando sobre como poderia resolvê-la. Fiz algumas pesquisas, mas todas as soluções requeriam a leitura direta de um arquivo XML.

Hoje dei mais uma olhada nela e ai veio aquela luz na cabeça . Lembrei de outro projeto em que tive que "quebrar" dados em varias linhas por que estava tudo num unico campo texto levando em conta caracteres separadores.

Ai foi baixar a cabeça e escrever o código.

Isso ai, e viva o Qlik !!

Did you find a solution to your question? Mark the solution as accepted and if you found it useful, press the like button! | Follow me on Linkedin
Thiago_Justen_
Author

Tava usando alguns (pra não dizer muitos) SubFields pra tentar uma solução plausível. Mas hoje, você fez meu dia feliz (soou estranho, eu sei hehe).

Mais uma vez muitoooooo obrigado!!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago