Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

djbarbas

Ficheiro XML Duvida / Sugestão

Mensagens Recomendadas

djbarbas

Ántes de mais parabens pela comunidade e pelo trabalho que aqui faz. Este é o meu primeiro tópico aqui no forum.

Tenho na empresa um programa de gestão que recebe facturas de um outro programa via xml, tudo funciona bem à excepção de alguns casos mas já identifiquei como resolver. A resolução passa por alterar o ficheiro xml antes de ser importado. Vou transpor parte do ficheiro para que possa ser mais claro no que pretendo:

<?xml version="1.0" encoding="iso-8859-1"?>
<documento xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="http://www.expedita.info/XSD/vendaDirecta.xsd">
  <cabecalho>
    <nmdoc>Venda a Dinheiro NET</nmdoc>
    <fno>182</fno>
    <no>1</no>
    <nome>Consumidor Final</nome>
    <fdata>2009-06-01</fdata>
    <pdata>2009-06-01</pdata>
    <ftano>2009</ftano>
    <ndoc>11</ndoc>
    <moeda>PTE ou EURO</moeda>
    <estab>0</estab>
    <tipo>Cliente Final</tipo>
    <tipodoc>1</tipodoc>
    <ettiliq>82.000000</ettiliq>
    <etotal>81.510000</etotal>
    <Ettiva>0.490000</Ettiva>
  </cabecalho>
  <linha>
    <nmdoc>Venda a Dinheiro NET</nmdoc>
    <fno>182</fno>
    <ref>4</ref>
    <design>1 - Cls A SJ-PI-SJ</design>
    <qtt>1</qtt>
    <etiliquido>67.000000</etiliquido>
    <ndoc>11</ndoc>
    <epv>67.000000</epv>
    <desconto>.00</desconto>
    <IVA>0</IVA>
  </linha>
  <linha>
    <nmdoc>Venda a Dinheiro NET</nmdoc>
    <fno>182</fno>
    <ref>5</ref>
    <design>1 - Taxa Reserva no Porto</design>
    <qtt>1</qtt>
    <etiliquido>1.754400</etiliquido>
    <ndoc>11</ndoc>
    <epv>1.754400</epv>
    <desconto>.00</desconto>
    <IVA>14</IVA>
  </linha>
  <linha>
    <nmdoc>Venda a Dinheiro NET</nmdoc>
    <fno>182</fno>
    <ref>1</ref>
    <design>1 - TUR SJ-PI</design>
    <qtt>1</qtt>
    <etiliquido>11.000000</etiliquido>
    <ndoc>11</ndoc>
    <epv>11.000000</epv>
    <desconto>.00</desconto>
    <IVA>0</IVA>
  </linha>
  <linha>
    <nmdoc>Venda a Dinheiro NET</nmdoc>
    <fno>182</fno>
    <ref>5</ref>
    <design>1 - Taxa Reserva no Porto</design>
    <qtt>1</qtt>
    <etiliquido>1.754400</etiliquido>
    <ndoc>11</ndoc>
    <epv>1.754400</epv>
    <desconto>.00</desconto>
    <IVA>14</IVA>
  </linha>
</documento>

O que eu pretendo é analisar todas as tags <linha></linha> e sempre que encontrar uma tag igual eliminar e aumentar a tag <qtt> para mais um, gerando-me o novo código:

<?xml version="1.0" encoding="iso-8859-1"?>
<documento xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="http://www.expedita.info/XSD/vendaDirecta.xsd">
  <cabecalho>
    <nmdoc>Venda a Dinheiro NET</nmdoc>
    <fno>182</fno>
    <no>1</no>
    <nome>Consumidor Final</nome>
    <fdata>2009-06-01</fdata>
    <pdata>2009-06-01</pdata>
    <ftano>2009</ftano>
    <ndoc>11</ndoc>
    <moeda>PTE ou EURO</moeda>
    <estab>0</estab>
    <tipo>Cliente Final</tipo>
    <tipodoc>1</tipodoc>
    <ettiliq>82.000000</ettiliq>
    <etotal>81.510000</etotal>
    <Ettiva>0.490000</Ettiva>
  </cabecalho>
  <linha>
    <nmdoc>Venda a Dinheiro NET</nmdoc>
    <fno>182</fno>
    <ref>4</ref>
    <design>1 - Cls A SJ-PI-SJ</design>
    <qtt>1</qtt>
    <etiliquido>67.000000</etiliquido>
    <ndoc>11</ndoc>
    <epv>67.000000</epv>
    <desconto>.00</desconto>
    <IVA>0</IVA>
  </linha>
  <linha>
    <nmdoc>Venda a Dinheiro NET</nmdoc>
    <fno>182</fno>
    <ref>5</ref>
    <design>1 - Taxa Reserva no Porto</design>
    <qtt>2</qtt>
    <etiliquido>1.754400</etiliquido>
    <ndoc>11</ndoc>
    <epv>1.754400</epv>
    <desconto>.00</desconto>
    <IVA>14</IVA>
  </linha>
  <linha>
    <nmdoc>Venda a Dinheiro NET</nmdoc>
    <fno>182</fno>
    <ref>1</ref>
    <design>1 - TUR SJ-PI</design>
    <qtt>1</qtt>
    <etiliquido>11.000000</etiliquido>
    <ndoc>11</ndoc>
    <epv>11.000000</epv>
    <desconto>.00</desconto>
    <IVA>0</IVA>
  </linha>
</documento>

Gostaria de sugestões de como o fazer e em que linguagens, pessoalmente gosto de VB mas agrada-me sempre o simples, o objectivo final é ter uma pasta com diversos ficheiros xml e ele corrigir-me todos.

Obrigado desde de já.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djbarbas

Boas de novo, já tenho ideias alinhavadas vou fazer em vb.net, até agora tenho somente as ideias em papel e alguns testes em vb, mais tarde vou postar aqui. Um dos desafios que me deparo é querer excecutar esta rotina em mais do que um ficheiro xml, objectivo é ter uma pasta com n ficheiros xml e ele executar o mesmo procedimento em todos eles. Penso que deveria criar um procedimento ou um dll para ser excecutado em todos os ficheiros contidos na pasta. Alguém tem alguma sugestão inicial ou poderia-me dar uma mão nisso? Vou tentar postar o código amanhã ou depois.

Thks

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.