Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
djbarbas

Ficheiro XML Duvida / Sugestão

Recommended Posts

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á.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.