Como eu disse, de vez em quando vém aquela inspiração....
Vamos começar com algo da programação.... deve ser novidade, complicado, mas tudo bem:
DO WHILE
IF
comandos
ENDIF
IF
IF
comandos
ENDIF
ENDIF
ENDDO
Tudo em pares: IF-ENDIF, DO WHILE-ENDDO
Começa com IF, termina com END-IF, começa com DO termina com END-DO, a diferença é o prefixo END
Agora colocando entre <>
<DO WHILE>
<IF>
comandos
<END-IF>
<IF>
<IF>
comandos
<END-IF>
<END-IF>
<END-DO>
agora trocando o prefixo END por /
<DO WHILE>
<IF>
comandos
</IF>
<IF>
<IF>
comandos
</IF>
</IF>
</DO>
Pronto, um XML
Pera aÃ... na verdade falta algo.... ou sobra.... XML é tudo na mesma linha
<DO WHILE><IF>comandos</IF><IF><IF>comandos</IF></IF></DO>
Agora sim, agora é um XML.
O que tem de complicado nisso?
É algo usado o tempo todo, só mudou de "END" pra "/", e "<>" pra destacar do restante.
Do mesmo jeito que temos blocos na programação, temos no XML.
Mas a nota fiscal eletrônica é complicada....
Bom.. uma coisa de cada vez.
O XML da NFE tem vários nomes/blocos para serem usados.
No bloco valor coloca-se valor, no bloco ICMS coloca-se ICMS, no bloco cliente coloca-se cliente.
É quase auto-explicativo.
Então porque o XML de NFE é tão complicado?
Ele não é complicado. O que acontece é que tem muita informação/muitos blocos.
É fácil gerar então?
Sim, é fácil, mas é muito demorado, porque tem muita informação.
E como a informação pode vir de vários arquivos, e cada aplicativo guarda isso de um jeito, cada um acaba tendo que fazer sua própria rotina.
No que ajuda gerar TXT ou INI?
Você não precisa aprender sobre XML, não precisa aprender sobre IF e END-IF.
Será que isso foi um bom negócio?
Será que a cabeça do programador tá tão enferrujada, que não enxerga o IF END-IF ?
Na prática, à s vezes consideramos difÃcil antes mesmo de conhecer o "troço", ou nós mesmos complicamos.
E esquecemos de tentar entender o "troço" em partes.
Lembram? Programação?
Dividir um problema grande em problemas menores
Gerar xml é fácil, são vários blocos.
Dividindo os blocos, outros blocos, e mais outros, até chegar ao campo.
Então... agora ficou simples: temos um campo e precisamos preencher esse campo
São muitos campos.... ué... na linha do fonte, vai preencher tudo de uma vez, ou um campo de cada vez?
Então... um campo por vez, uma linha de fonte por vez.
Se gerar INI, TXT, ou outro formato.... não vai ter esse mesmo trabalho?
Então... pra que merd.... vai aprender outro formato? tá facilitando o que?