Mudanças entre as edições de "TPHXML"
(Criou página com ''''Conceito''' O objeto TPHXML pode ser utilizado para realizar a leitura de conteúdos em formato XML. '''Exemplo''' // O exemplo de leitura de códigos de produtos de X...') |
|||
(29 revisões intermediárias por 4 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | '''Conceito''' | + | ==='''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'''=== |
− | + | {| class="wikitable" style="width: 100%" | |
− | + | ! 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; |
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;