XML Bloco X Delphi
14/04/2022
0
Olá, bom dia!
Preciso percorrer um XML com o Delphi para verificar a alterar algumas informação, preciso verificar o valor do do campo:
<ValorTotalLiquido>xxx</ValorTotalLiquido>
Este valor fica dentro de alguns nodes, porém estou conseguindo acessar apenas o primeiro ValorTotalLiquido do primeiro produto.
Segue o XML usado:
Não identifiquei o que posso alterar no meu código, ou o que está errado. Mas preciso acessar o <ValorTotalLiquido>x</ValorTotalLiquido> de todos os produtos. Primeiro, verificando no primeiro grupo de <TotalizadorParcial>, verificando o produto contido nele, e depois ir para o próximo grupo <TotalizadorParcial>, verificando os produtos contidos nele.
Já tentei ver alguns tutoriais, mas não encontrei solução para isso.
Se alguém tiver uma ideia e puder me ajudar, eu fico agradecido!
Obrigado desde já!
Preciso percorrer um XML com o Delphi para verificar a alterar algumas informação, preciso verificar o valor do do campo:
<ValorTotalLiquido>xxx</ValorTotalLiquido>
Este valor fica dentro de alguns nodes, porém estou conseguindo acessar apenas o primeiro ValorTotalLiquido do primeiro produto.
xmlBlocoX := TXMLDocument.Create(self); xmlBlocoX.LoadFromFile(vloc_FileName); vloc_TotXML := xmlBlocoX.ChildNodes['ReducaoZ'].ChildNodes['Mensagem'].ChildNodes['Ecf'].ChildNodes['DadosReducaoZ'].ChildNodes['TotalizadoresParciais']; for i := 0 to vloc_TotXML.ChildNodes.Count - 1 do with vloc_TotXML.ChildNodes[i] do begin vloc_TotProdXML := vloc_TotXML.ChildNodes['TotalizadorParcial'].ChildNodes['ProdutosServicos']; for X := 0 to vloc_TotProdXML.ChildNodes.Count - 1 do with vloc_TotProdXML.ChildNodes[X] do begin vloc_TotProdXML.ChildNodes['Produto'].ChildNodes['ValorTotalLiquido'].Text := '3.50'; end; end; xmlBlocoX.SaveToFile(vloc_FileName);
Segue o XML usado:
<?xml version="1.0" encoding="UTF-8"?> <ReducaoZ Versao="1.0"> <Mensagem> <Ecf> <DadosReducaoZ> <TotalizadoresParciais> <TotalizadorParcial> <Nome>fffffff</Nome> <Valor>0,00</Valor> <ProdutosServicos> <Produto> <Descricao>Pão</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>FF</CodigoNCMSH> <CodigoProprio>760</CodigoProprio> <Quantidade>1,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>89,90</ValorCancelamento> <ValorTotalLiquido>0,00</ValorTotalLiquido> </Produto> </ProdutosServicos> </TotalizadorParcial> <TotalizadorParcial> <Nome>TTTTTTTT</Nome> <Valor>353,50</Valor> <ProdutosServicos> <Produto> <Descricao>Guarana</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>22019000</CodigoNCMSH> <CodigoProprio>11</CodigoProprio> <Quantidade>7,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>0,00</ValorCancelamento> <ValorTotalLiquido>28,00</ValorTotalLiquido> </Produto> <Produto> <Descricao>Pepsi</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>TTTTTTT</CodigoNCMSH> <CodigoProprio>10</CodigoProprio> <Quantidade>3,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>0,00</ValorCancelamento> <ValorTotalLiquido>12,00</ValorTotalLiquido> </Produto> <Produto> <Descricao>Coca-Cola</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>TTTTTTT</CodigoNCMSH> <CodigoProprio>10</CodigoProprio> <Quantidade>4,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>0,00</ValorCancelamento> <ValorTotalLiquido>15,00</ValorTotalLiquido> </Produto> </ProdutosServicos> </TotalizadorParcial> </TotalizadoresParciais> </DadosReducaoZ> </Ecf> </Mensagem> </ReducaoZ>
Não identifiquei o que posso alterar no meu código, ou o que está errado. Mas preciso acessar o <ValorTotalLiquido>x</ValorTotalLiquido> de todos os produtos. Primeiro, verificando no primeiro grupo de <TotalizadorParcial>, verificando o produto contido nele, e depois ir para o próximo grupo <TotalizadorParcial>, verificando os produtos contidos nele.
Já tentei ver alguns tutoriais, mas não encontrei solução para isso.
Se alguém tiver uma ideia e puder me ajudar, eu fico agradecido!
Obrigado desde já!
Jackson Borba
Curtir tópico
+ 0
Responder
Post mais votado
14/04/2022
Bom dia, assiste esse video ai.
https://www.youtube.com/watch?v=GV3R8c6bCxg
https://www.youtube.com/watch?v=GV3R8c6bCxg
Paulo
Responder
Mais Posts
14/04/2022
Assis Ferreira
Olá, bom dia!
Preciso percorrer um XML com o Delphi para verificar a alterar algumas informação, preciso verificar o valor do do campo:
<ValorTotalLiquido>xxx</ValorTotalLiquido>
Este valor fica dentro de alguns nodes, porém estou conseguindo acessar apenas o primeiro ValorTotalLiquido do primeiro produto.
Segue o XML usado:
Não identifiquei o que posso alterar no meu código, ou o que está errado. Mas preciso acessar o <ValorTotalLiquido>x</ValorTotalLiquido> de todos os produtos. Primeiro, verificando no primeiro grupo de <TotalizadorParcial>, verificando o produto contido nele, e depois ir para o próximo grupo <TotalizadorParcial>, verificando os produtos contidos nele.
Já tentei ver alguns tutoriais, mas não encontrei solução para isso.
Se alguém tiver uma ideia e puder me ajudar, eu fico agradecido!
Obrigado desde já!
Preciso percorrer um XML com o Delphi para verificar a alterar algumas informação, preciso verificar o valor do do campo:
<ValorTotalLiquido>xxx</ValorTotalLiquido>
Este valor fica dentro de alguns nodes, porém estou conseguindo acessar apenas o primeiro ValorTotalLiquido do primeiro produto.
xmlBlocoX := TXMLDocument.Create(self); xmlBlocoX.LoadFromFile(vloc_FileName); vloc_TotXML := xmlBlocoX.ChildNodes['ReducaoZ'].ChildNodes['Mensagem'].ChildNodes['Ecf'].ChildNodes['DadosReducaoZ'].ChildNodes['TotalizadoresParciais']; for i := 0 to vloc_TotXML.ChildNodes.Count - 1 do with vloc_TotXML.ChildNodes[i] do begin vloc_TotProdXML := vloc_TotXML.ChildNodes['TotalizadorParcial'].ChildNodes['ProdutosServicos']; for X := 0 to vloc_TotProdXML.ChildNodes.Count - 1 do with vloc_TotProdXML.ChildNodes[X] do begin vloc_TotProdXML.ChildNodes['Produto'].ChildNodes['ValorTotalLiquido'].Text := '3.50'; end; end; xmlBlocoX.SaveToFile(vloc_FileName);
Segue o XML usado:
<?xml version="1.0" encoding="UTF-8"?> <ReducaoZ Versao="1.0"> <Mensagem> <Ecf> <DadosReducaoZ> <TotalizadoresParciais> <TotalizadorParcial> <Nome>fffffff</Nome> <Valor>0,00</Valor> <ProdutosServicos> <Produto> <Descricao>Pão</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>FF</CodigoNCMSH> <CodigoProprio>760</CodigoProprio> <Quantidade>1,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>89,90</ValorCancelamento> <ValorTotalLiquido>0,00</ValorTotalLiquido> </Produto> </ProdutosServicos> </TotalizadorParcial> <TotalizadorParcial> <Nome>TTTTTTTT</Nome> <Valor>353,50</Valor> <ProdutosServicos> <Produto> <Descricao>Guarana</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>22019000</CodigoNCMSH> <CodigoProprio>11</CodigoProprio> <Quantidade>7,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>0,00</ValorCancelamento> <ValorTotalLiquido>28,00</ValorTotalLiquido> </Produto> <Produto> <Descricao>Pepsi</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>TTTTTTT</CodigoNCMSH> <CodigoProprio>10</CodigoProprio> <Quantidade>3,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>0,00</ValorCancelamento> <ValorTotalLiquido>12,00</ValorTotalLiquido> </Produto> <Produto> <Descricao>Coca-Cola</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>TTTTTTT</CodigoNCMSH> <CodigoProprio>10</CodigoProprio> <Quantidade>4,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>0,00</ValorCancelamento> <ValorTotalLiquido>15,00</ValorTotalLiquido> </Produto> </ProdutosServicos> </TotalizadorParcial> </TotalizadoresParciais> </DadosReducaoZ> </Ecf> </Mensagem> </ReducaoZ>
Não identifiquei o que posso alterar no meu código, ou o que está errado. Mas preciso acessar o <ValorTotalLiquido>x</ValorTotalLiquido> de todos os produtos. Primeiro, verificando no primeiro grupo de <TotalizadorParcial>, verificando o produto contido nele, e depois ir para o próximo grupo <TotalizadorParcial>, verificando os produtos contidos nele.
Já tentei ver alguns tutoriais, mas não encontrei solução para isso.
Se alguém tiver uma ideia e puder me ajudar, eu fico agradecido!
Obrigado desde já!
É para nota fiscal?
Responder
15/04/2022
Jackson Borba
Olá, bom dia!
Preciso percorrer um XML com o Delphi para verificar a alterar algumas informação, preciso verificar o valor do do campo:
<ValorTotalLiquido>xxx</ValorTotalLiquido>
Este valor fica dentro de alguns nodes, porém estou conseguindo acessar apenas o primeiro ValorTotalLiquido do primeiro produto.
Segue o XML usado:
Não identifiquei o que posso alterar no meu código, ou o que está errado. Mas preciso acessar o <ValorTotalLiquido>x</ValorTotalLiquido> de todos os produtos. Primeiro, verificando no primeiro grupo de <TotalizadorParcial>, verificando o produto contido nele, e depois ir para o próximo grupo <TotalizadorParcial>, verificando os produtos contidos nele.
Já tentei ver alguns tutoriais, mas não encontrei solução para isso.
Se alguém tiver uma ideia e puder me ajudar, eu fico agradecido!
Obrigado desde já!
Preciso percorrer um XML com o Delphi para verificar a alterar algumas informação, preciso verificar o valor do do campo:
<ValorTotalLiquido>xxx</ValorTotalLiquido>
Este valor fica dentro de alguns nodes, porém estou conseguindo acessar apenas o primeiro ValorTotalLiquido do primeiro produto.
xmlBlocoX := TXMLDocument.Create(self); xmlBlocoX.LoadFromFile(vloc_FileName); vloc_TotXML := xmlBlocoX.ChildNodes['ReducaoZ'].ChildNodes['Mensagem'].ChildNodes['Ecf'].ChildNodes['DadosReducaoZ'].ChildNodes['TotalizadoresParciais']; for i := 0 to vloc_TotXML.ChildNodes.Count - 1 do with vloc_TotXML.ChildNodes[i] do begin vloc_TotProdXML := vloc_TotXML.ChildNodes['TotalizadorParcial'].ChildNodes['ProdutosServicos']; for X := 0 to vloc_TotProdXML.ChildNodes.Count - 1 do with vloc_TotProdXML.ChildNodes[X] do begin vloc_TotProdXML.ChildNodes['Produto'].ChildNodes['ValorTotalLiquido'].Text := '3.50'; end; end; xmlBlocoX.SaveToFile(vloc_FileName);
Segue o XML usado:
<?xml version="1.0" encoding="UTF-8"?> <ReducaoZ Versao="1.0"> <Mensagem> <Ecf> <DadosReducaoZ> <TotalizadoresParciais> <TotalizadorParcial> <Nome>fffffff</Nome> <Valor>0,00</Valor> <ProdutosServicos> <Produto> <Descricao>Pão</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>FF</CodigoNCMSH> <CodigoProprio>760</CodigoProprio> <Quantidade>1,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>89,90</ValorCancelamento> <ValorTotalLiquido>0,00</ValorTotalLiquido> </Produto> </ProdutosServicos> </TotalizadorParcial> <TotalizadorParcial> <Nome>TTTTTTTT</Nome> <Valor>353,50</Valor> <ProdutosServicos> <Produto> <Descricao>Guarana</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>22019000</CodigoNCMSH> <CodigoProprio>11</CodigoProprio> <Quantidade>7,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>0,00</ValorCancelamento> <ValorTotalLiquido>28,00</ValorTotalLiquido> </Produto> <Produto> <Descricao>Pepsi</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>TTTTTTT</CodigoNCMSH> <CodigoProprio>10</CodigoProprio> <Quantidade>3,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>0,00</ValorCancelamento> <ValorTotalLiquido>12,00</ValorTotalLiquido> </Produto> <Produto> <Descricao>Coca-Cola</Descricao> <CodigoGTIN/> <CodigoCEST/> <CodigoNCMSH>TTTTTTT</CodigoNCMSH> <CodigoProprio>10</CodigoProprio> <Quantidade>4,000</Quantidade> <Unidade>UN</Unidade> <ValorDesconto>0,00</ValorDesconto> <ValorAcrescimo>0,00</ValorAcrescimo> <ValorCancelamento>0,00</ValorCancelamento> <ValorTotalLiquido>15,00</ValorTotalLiquido> </Produto> </ProdutosServicos> </TotalizadorParcial> </TotalizadoresParciais> </DadosReducaoZ> </Ecf> </Mensagem> </ReducaoZ>
Não identifiquei o que posso alterar no meu código, ou o que está errado. Mas preciso acessar o <ValorTotalLiquido>x</ValorTotalLiquido> de todos os produtos. Primeiro, verificando no primeiro grupo de <TotalizadorParcial>, verificando o produto contido nele, e depois ir para o próximo grupo <TotalizadorParcial>, verificando os produtos contidos nele.
Já tentei ver alguns tutoriais, mas não encontrei solução para isso.
Se alguém tiver uma ideia e puder me ajudar, eu fico agradecido!
Obrigado desde já!
É para nota fiscal?
Seria para o envio do arquivo do Bloco X de SC.
O XML está editado, mas o layout é parecido. Não estou conseguindo acessar os produtos dos dois grupos de TotalizadoresParciais, consigo acessar e modificar apenas o primeiro. Preciso verificar o valor liquido, que é a última tag neles.
Responder
Clique aqui para fazer login e interagir na Comunidade :)