Boa tarde pessoa, td bem.
Preciso de uma ajuda para criar um fluxo de leitura de vários arquivos xml em um mesmo diretório.
Tentei criar um utilizando o Dynamic Input Data e antes dele o Directory Input. Alterei no Dynamic o Full Path pelo Full Path vindo do Directory Input, e ele até gerar os 29 fullpath que preciso. Ai quando ele vai ler os 29 arquivos no Dynamic ele da erro em uns 16 arquivos dizendo que o schema não está correto ao do apontado no Dynamic Input e não le, mas pelo que pude verificar todos os arquivos xml estão com a mesma estrutura de campos e colunas e analisando o browser e os metadatas parece que somente consegue ler os dados do primeiro arquivo xml, dando erro nos demais
Alguém pode me ajudar. Não posso compartilhar os arquivos xml, pois contem informações confidenciais de clientes, mas vou compartilhar telas da configuração que fiz.
Obrigado
Solucionado! Ir para Solução.
@afprospero tudo bem?
Sem algum modelo de xml pra gente testar não vamos conseguir te ajudar de uma forma precisa e assertiva.
Se puder compartilhar o fluxo ou alguns XML's de exemplo seria legal.
Pelas imagens que você enviou, as configurações parecem estar corretas
Dito isto vamos lá:
1 - quando temos erro de schema isso quer dizer que alguma coisa entre os arquivos não bate. Isso vale para os arquivos em Excel também.
2 - Precisa checar se dentro do XML por exemplo não existem hierarquias diferentes entre eles o que iria configurar os schemas diferentes
3 - Verifique se no final/Inicio dos aqruivos você por acaso não tem quantidade de caracteres em branco que támbém iria caracterizar a diferença nos schemas.
4 - verifique se as origens dos XML's são as mesmas. Se você estiver recebendo os XML´s "iguais" mas de sistemas diferentes provavelmente os schemas serão diferentes também.
Caso todas essas possibilidades estejam checadas e eliminadas como possíveis causas do seu problema, eu partiria para a utilização de uma BATCH MACRO para ler esses xmls.
Para isso você pode dar uma olhada nesse video aqui
Espero que ajude.
Abraços
Carlos, bom dia.
Obrigado pela ajuda mais uma vez. Bem, eu alterei 3 arquivos XML para manter a confidencialidade dos clientes (tentei de todo jeito fazer upload aqui mas não consegui. Troquei para csv, xml, txt, xlsx e nada. Tem alguma dica para fazer upload aquidos arquivos?). De qualquer forma vou explicar abaixo com mais detalhes o que preciso.
Eu preciso ler N xmls em um diretório e eu to recebendo erro de schema. O erro pode ser devido aos header dos xml terem informações diferentes entre si. Pois no Header contem informações de clientes, cnpj, numero de conta, e é exclusivo para cada xml, pois é 1 xml para cada cliente.
Dito isso, eu preciso de um fluxo que me traga as infos do header como coluna nome, cnpj, etc e depois me traga as informações que estão na seção titprivado, que irão sempre ter a mesma estrutura, alterando somente os valores, com os nomes de isin, codativo, etc.
Vale lembrar que quando eu carrego 1 arquivo único ele me traz a seção titprivado com as infos que preciso mas despreza as infos do header, que tbm preciso.
Se conseguir visualizar uma forma de resolver e puder me ajudar mais uma vez agradeço.
Oi, @afprospero. Apenas para eu entender o que está acontecendo quando você tenta fazer o upload dos arquivos aqui, o que exatamente acontece? Você recebe alguma mensagem de erro? Tem algum print pra compartilhar pra ver se eu consigo investigar melhor?
Oi, @afprospero. Tente reverter o arquivo para .pdf ou outro tipo de imagem, como .png. Vamos ver se isso resolve.
@afprospero tudo bem?
Como você não conseguiu subir seus arquivos aqui, eu fiz um modelo usando uns xmls de exemplo ok?
talvez precise fazer alguns ajustes, mas no geral acho que vai funcionar pro seu problema.
O segredo eu acho que está todo na forma como lemos o XML na entrada.
A idéia seria ler cada arquivo como 1 unica linha e após isso ler o que está dentro de cada linha.
Veja a configuração do input data (lendo todos os xmls de um unico diretório)
Após isso seleciono apenas o campo que me interessa (XPTO_outerXML)
Coloco um Record ID para identificar de onde vem a minha linha
Uso os XMLS Parses pra pegar os dados em seus "filhos"
E finalmente junto tudo usando um Multiple JOIN (Record ID na chave)
Acho que funcionou.
Testa aí.
Abraços
@carlosteixeira como sempre muito atencioso e me ajudando demais. Cara, fiz o teste aqui e rodou perfeitamente do jeito que preciso.
Tem uns ajustes que vou fazer mas a idéia principal vc matou. Salvou minha pele aqui cara.
Valeu.
Maravilha, @afprospero!!!
@carlosteixeira Carlão, como sempre, obrigada pela força! 😀