Mudanças entre as edições de "TPHXML"
(8 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
+ | ==='''Conceito'''=== | ||
+ | O objeto TPHXML foi projetado para leitura de dados de arquivos XML. Ele permite a busca de elementos dentro de um XML, e fornece recursos para consumir arquivos XML. | ||
− | + | ==='''Propriedades'''=== | |
− | |||
− | ===Propriedades=== | ||
{| class="wikitable" style="width: 100%" | {| class="wikitable" style="width: 100%" | ||
! Nome | ! Nome | ||
Linha 13: | Linha 13: | ||
|} | |} | ||
− | ===Procedimentos=== | + | ==='''Procedimentos'''=== |
*'''LerXml(Xml: String):''' Carrega um XML a partir de uma string fornecida. | *'''LerXml(Xml: String):''' Carrega um XML a partir de uma string fornecida. | ||
*'''Elemento(Index: Integer):''' Retorna o elemento na posição especificada pela lista de elementos. | *'''Elemento(Index: Integer):''' Retorna o elemento na posição especificada pela lista de elementos. | ||
Linha 21: | Linha 21: | ||
*'''RetornaXML:''' Retorna o XML armazenado na classe como uma string. | *'''RetornaXML:''' Retorna o XML armazenado na classe como uma string. | ||
− | ===Exemplo(s)=== | + | ==='''Exemplo(s)'''=== |
Este exemplo mostra como utilizar a propriedade '''Count''' da classe TPHXML para iterar pelos elementos '''det''' de um XML e realizar ações específicas em cada produto. Além disso, a boa prática de criar objetos separados para os diferentes segmentos do XML (como ICMS e IPI) ajuda a otimizar a execução, isolando a lógica de cada parte do XML. | Este exemplo mostra como utilizar a propriedade '''Count''' da classe TPHXML para iterar pelos elementos '''det''' de um XML e realizar ações específicas em cada produto. Além disso, a boa prática de criar objetos separados para os diferentes segmentos do XML (como ICMS e IPI) ajuda a otimizar a execução, isolando a lógica de cada parte do XML. | ||
Linha 28: | Linha 28: | ||
var | var | ||
ArqXML, DETXML, DETICMSXML, DETIPIXML:TPHXML; | ArqXML, DETXML, DETICMSXML, DETIPIXML:TPHXML; | ||
− | I:Integer; | + | I:Integer; |
+ | V_CodProduto, V_ICMSCST, V_IPIEnq:String | ||
begin | begin | ||
ArqXML := TPHXML.Create; | ArqXML := TPHXML.Create; | ||
Linha 50: | Linha 51: | ||
DETICMSXML.LerXML(DETXML.ElementoDoNome('ICMS').RetornaXML); | DETICMSXML.LerXML(DETXML.ElementoDoNome('ICMS').RetornaXML); | ||
− | V_ICMSCST | + | V_ICMSCST := DETICMSXML.ElementoDoNome('CST').Texto; |
finally | finally | ||
DETICMSXML.Free; | DETICMSXML.Free; |
Edição atual tal como às 13h57min de 6 de março de 2025
Conceito
O objeto TPHXML foi projetado para leitura de dados de arquivos XML. Ele permite a busca de elementos dentro de um XML, e fornece recursos para consumir arquivos XML.
Propriedades
Nome | Tipo | Descrição |
---|---|---|
Texto | String | Armazena o texto contido em um elemento XML. |
Procedimentos
- LerXml(Xml: String): Carrega um XML a partir de uma string fornecida.
- Elemento(Index: Integer): Retorna o elemento na posição especificada pela lista de elementos.
- ElementoDoNome(Nome: String): Busca um elemento pelo nome no XML carregado.
- LoadFromFile(Arquivo: String): Carrega um arquivo XML do disco e processa com o método LerXml.
- Count: Retorna o número de elementos presentes na lista de elementos.
- RetornaXML: Retorna o XML armazenado na classe como uma string.
Exemplo(s)
Este exemplo mostra como utilizar a propriedade Count da classe TPHXML para iterar pelos elementos det de um XML e realizar ações específicas em cada produto. Além disso, a boa prática de criar objetos separados para os diferentes segmentos do XML (como ICMS e IPI) ajuda a otimizar a execução, isolando a lógica de cada parte do XML.
procedure ImportaXML; var ArqXML, DETXML, DETICMSXML, DETIPIXML:TPHXML; I:Integer; V_CodProduto, V_ICMSCST, V_IPIEnq:String begin ArqXML := TPHXML.Create; try ArqXML.LerXML(ParamByName('Arquivo').AsString); IniciarTransacao; try for I := 0 to ArqXML.ElementoDoNome('det').Count - 1 do begin DETXML := TPHXML.Create; try DETXML.LerXML(ArqXML.ElementoDoNome('det').Elemento(I).RetornaXML); { DET } V_CodProduto := DETXML.ElementoDoNome('cProd').Texto; { ICMS } DETICMSXML := TPHXML.Create; try DETICMSXML.LerXML(DETXML.ElementoDoNome('ICMS').RetornaXML); V_ICMSCST := DETICMSXML.ElementoDoNome('CST').Texto; finally DETICMSXML.Free; end; { IPI } DETIPIXML := TPHXML.Create; try DETIPIXML.LerXML(DETXML.ElementoDoNome('IPI').RetornaXML); V_IPIEnq := DETIPIXML.ElementoDoNome('cEnq').Texto; finally DETIPIXML.Free; end; I := I + 1; ConfirmarTransacao; finally DETXML.Free; end; end; except CancelarTransacao; ErroValidacao(ExceptionMessage +' Produto: '+ V_CodProduto); end; finally ArqXML.Free; end; end;