Mudanças entre as edições de "TPHXML"
(→Procedimentos) |
(→Exemplo(s)) |
||
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. |
Edição das 13h56min 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; 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;