Ir para conteúdo
  • Cadastre-se

dev botao

Ler Campo Xml


  • Este tópico foi criado há 4260 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia

 

    Como devo fazer para ler um campo do XML que está dessa forma <ns1:exigeUfFavorecida campo="c01_UfFavorecida">S</ns1:exigeUfFavorecida>. Como eu faço para ler esse campo exigeUfFavorecida, eu tentei usar o rCampo e rAtributo da unit pcnLeitor, mas como não estou acostumado, não estou conseguindo pegar o valor "S". Segue anexo do XML que estou tentando ler.

 

Abs

 

Claudemir Vitor Pereira

Analista de Sistemas

Atual Consultoria e Sistemas

Maringá-PR

ConsultaConfigUF.xml

Claudemir Vitor Pereira
Analista Desenvolvedor
MasterTech Tecnologia e Gestão Empresarial
Curitiba-PR
(041)3083-6500
Link para o comentário
Compartilhar em outros sites

Achei uma forma de ler o campo nessa situação, mas necessitaria de uma alteração na unit "pcnLeitor" no método "rCampo" para atender os casos como é feito hoje onde tem apenas o valor do campo entre as tag's  <nome_campo>valor_campo</nome_campoou nos casos como esse que eu peguei onde existem atributos mais o valor do campo por exemplo <nome_campo nome_atributo="valor_atributo">valor_campo</nome_campo>, esse caso aconteceu na tentativa de ler um xml proveniente do site do sefaz de Pernambuco, que está cuidando da parte do GNRE, a minha idéia é fazer um componente para o GNRE e disponibilizar para o projeto ACBr, como tenho clientes que estão precisando e já tenho acesso ao ambiente de homologação estou começando a desenvolver o componente.

 

Abraços.

 

Claudemir Vitor Pereira

Analista de Sistemas

Atual Consultoria e Sistemas

Maringá-PR

Editado por cvpereira
Claudemir Vitor Pereira
Analista Desenvolvedor
MasterTech Tecnologia e Gestão Empresarial
Curitiba-PR
(041)3083-6500
Link para o comentário
Compartilhar em outros sites

  • Consultores

Olá Claudemir,

 

 Com qual componente você está mexendo quando se deparou com isso?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Olá Claudemir,

 

 Com qual componente você está mexendo quando se deparou com isso?

Na verdade, não é um componente do ACBr, eu estou fazendo um componente para o GNRE e estou usando o padrão do ACBr e pretendo disponibilizar para quem queira usar. Eu me deparei com esse problema quando fui fazer a leitura  do xml de retorno gerado pela sefaz de PE que é quem está cuidando da parte do GNRE.

Claudemir Vitor Pereira
Analista Desenvolvedor
MasterTech Tecnologia e Gestão Empresarial
Curitiba-PR
(041)3083-6500
Link para o comentário
Compartilhar em outros sites

  • Consultores

Agora acho que entendi. Então, nesse caso, por favor anexe a unit alterada bem como explicações sobre:

 

1) Motivo da alteração;

2) Impacto sobre o código dos componentes atuais;

3) impacto no uso dos componentes atuais;

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde cvpereira,

 

A coisa é mais simples que você imagina:

 

veja esta function que você pode incluir no seu componente:

 

function RetirarPrefixos(AXML, sPrefixo: String): String;
begin
 AXML := StringReplace( AXML, sPrefixo, '', [rfReplaceAll] );
 result := AXML;
end;

 

Como utilizar:

 

Primeiro você carrega o XML para dentro de uma variável string, por exemplo sXML, depois executa a função:

 

sXML := RetiraPrefixos(sXML, 'ns1:');

 

Agora você tem o XML sem o prefixo nas tags.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde cvpereira,

 

A coisa é mais simples que você imagina:

 

veja esta function que você pode incluir no seu componente:

 

function RetirarPrefixos(AXML, sPrefixo: String): String;

begin

 AXML := StringReplace( AXML, sPrefixo, '', [rfReplaceAll] );

 result := AXML;

end;

 

Como utilizar:

 

Primeiro você carrega o XML para dentro de uma variável string, por exemplo sXML, depois executa a função:

 

sXML := RetiraPrefixos(sXML, 'ns1:');

 

Agora você tem o XML sem o prefixo nas tags.

Boa tarde Italo

 

   Essa dica com certeza vou usar para retirar esses prefixos que o sefaz - PE coloca no retorno. O problema maior era o que eu tinha colocado no post #2, pois eles são diferentes de todos os outros, porque tem tag que está no padrão que é usado ou seja  <nome_campo>valor_campo</nome_campo>, mas tem situações que eles envias as tag's com atributos antes do valor do campo, por exemplo <nome_campo nome_atributo="valor_atributo">valor_campo</nome_campo>, fazendo com que a leitura do campo usando a função rCampo da unit pcnLeitor não seja possível, é necessário fazer uma pequena adaptação que atenda os dois casos, mas a unit e compartilhada em todos os projetos portanto teria que ser feito um teste mais rigoroso para ver se atende todos os projetos a alteração, nos testes que eu fiz aqui funcionou perfeitamente para os dois casos.

 

Abs.

 

Claudemir Vitor Pereira

Analista de Sistemas

Atual Consultoria e Sistemas

Maringá-PR

Editado por cvpereira
Claudemir Vitor Pereira
Analista Desenvolvedor
MasterTech Tecnologia e Gestão Empresarial
Curitiba-PR
(041)3083-6500
Link para o comentário
Compartilhar em outros sites

  • Consultores

Claudemir

 

Neste caso, temos uma outra solução:

 

svalor := SeparaDados( sXML, sNomeCampo );

 

o conteudo de svalor vai ser o "valor_campo".

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Claudemir

 

Neste caso, temos uma outra solução:

 

svalor := SeparaDados( sXML, sNomeCampo );

 

o conteudo de svalor vai ser o "valor_campo".

Show de bola, dica foi perfeita.

 

Abs

 

Claudemir Vitor Pereira

Analista de Sistemas

Atual Consultoria e Sistemas

Maringá-PR

Editado por cvpereira
Claudemir Vitor Pereira
Analista Desenvolvedor
MasterTech Tecnologia e Gestão Empresarial
Curitiba-PR
(041)3083-6500
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4260 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.