Skip to main content
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
Luminary Alumni
Luminary Alumni

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 !!

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