Jump to content
Giovani Silva

Pegar dados de Tags em uma string XML usando PHP

Recommended Posts

Olá, usando o cUrl tenho obtido no retorno uma string conforme mostrado pelo vardump:

 

string(3236) "21SCJEYPH4M2018-10-09T11:25:07.810-03:0063E12018-10-09T11:25:05-03:00112018-10-01T00:00:00-03:00http://e-gov.betha.com.br/e-nota/visualizarnotaeletronica?link=1539095107817211162506638065523770518713302201024.500.000.000.000.002024.52.00000001036319400{[[Descricao=Anúncio na Internet][ItemServico=0103][Quantidade=1][ValorUnitario=16][ValorServico=16][ValorBaseCalculo=16][Aliquota=2][Deducoes=0][DescontoCondicionado=0][DescontoIncondicionado=0]][[Descricao=Anúncio 2][ItemServico=0103][Quantidade=1][ValorUnitario=8.5][ValorServico=8.5][ValorBaseCalculo=8.5][Aliquota=2][Deducoes=0][DescontoCondicionado=0][DescontoIncondicionado=0]]}43215012.21157181640001208586GI SO DA SA PUEVIZAmbiente de testes não requer endereço0SC8888888800114093040Nome aAv S Ped8São Frano4321501RS955600005198225644dids@yahoo.com.br0SCfalse"

 

Essa string possui o seguinte código fonte

<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
  <env:Header></env:Header>
  <env:Body>
    <ns2:ConsultarLoteRpsEnvioResponse xmlns:ns2="http://www.betha.com.br/e-nota-contribuinte-ws" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
      <ConsultarLoteRpsResposta>
        <ListaNfse>
          <ComplNfse>
            <Nfse>
              <InfNfse>
                <Numero>21</Numero>
                <CodigoVerificacao>SC5EYOH4M</CodigoVerificacao>
                <DataEmissao>2018-10-09T11:25:07.810-03:00</DataEmissao>
                <IdentificacaoRps>
                  <Numero>63</Numero>
                  <Serie>E</Serie>
                  <Tipo>1</Tipo>
                </IdentificacaoRps>
                <DataEmissaoRps>2018-10-09T11:25:05-03:00</DataEmissaoRps>
                <NaturezaOperacao>1</NaturezaOperacao>
                <OptanteSimplesNacional>1</OptanteSimplesNacional>
                <Competencia>2018-10-01T00:00:00-03:00</Competencia>
                <OutrasInformacoes>http://e-gov.betha.com.br/e-nota/visualizarnotaeletronica?link=153909510781721791625066100380655237705187133022010</OutrasInformacoes>
                <Servico>
                  <Valores>
                    <ValorServicos>24.5</ValorServicos><ValorDeducoes>0</ValorDeducoes><ValorPis>0.00</ValorPis><ValorCofins>0.00</ValorCofins><ValorInss>0.00</ValorInss><ValorIr>0.00</ValorIr><IssRetido>2</IssRetido><ValorIss>0</ValorIss><BaseCalculo>24.5</BaseCalculo><Aliquota>2.0000</Aliquota><DescontoCondicionado>0</DescontoCondicionado><DescontoIncondicionado>0</DescontoIncondicionado>
                  </Valores>
                  <ItemListaServico>0103</ItemListaServico>
                  <CodigoCnae>6319400</CodigoCnae>
                  <Discriminacao>{[[Descricao=Anúncio na Internet][ItemServico=0103][Quantidade=1][ValorUnitario=16][ValorServico=16][ValorBaseCalculo=16][Aliquota=2][Deducoes=0][DescontoCondicionado=0][DescontoIncondicionado=0]][[Descricao=Anúncio 2][ItemServico=0103][Quantidade=1][ValorUnitario=8.5][ValorServico=8.5][ValorBaseCalculo=8.5][Aliquota=2][Deducoes=0][DescontoCondicionado=0][DescontoIncondicionado=0]]}</Discriminacao><CodigoMunicipio>4368501</CodigoMunicipio><TaxaDiversa/></Servico><ValorCredito>2.21</ValorCredito><PrestadorServico><IdentificacaoPrestador><Cnpj>15718145500120</Cnpj><InscricaoMunicipal>8666</InscricaoMunicipal></IdentificacaoPrestador><RazaoSocial>G PU</RazaoSocial><NomeFantasia>VZ</NomeFantasia><Endereco><Endereco>Ambiente de testes não requer endereço</Endereco><CodigoMunicipio>0</CodigoMunicipio><Uf>SC</Uf><Cep>88888888</Cep></Endereco><Contato/></PrestadorServico><TomadorServico><IdentificacaoTomador><CpfCnpj><Cpf>0011405440</Cpf></CpfCnpj></IdentificacaoTomador><RazaoSocial>Gio</RazaoSocial><Endereco><Endereco>Av  Pe</Endereco><Numero>1338</Numero><Bairro>São F</Bairro><CodigoMunicipio>4354501</CodigoMunicipio><Uf>RS</Uf><Cep>95560000</Cep></Endereco><Contato><Telefone>51982263344</Telefone><Email>di2ss@yahoo.com.br</Email></Contato></TomadorServico><IntermediarioServico/><OrgaoGerador><CodigoMunicipio>0</CodigoMunicipio><Uf>SC</Uf></OrgaoGerador><ConstrucaoCivil/></InfNfse></Nfse><NfseCancelamento><Confirmacao><Pedido><InfPedidoCancelamento/><ns3:Signature/></Pedido><InfConfirmacaoCancelamento><Sucesso>false</Sucesso></InfConfirmacaoCancelamento></Confirmacao></NfseCancelamento><NfseSubstituicao><SubstituicaoNfse/></NfseSubstituicao></ComplNfse></ListaNfse><ListaMensagemRetorno/></ConsultarLoteRpsResposta></ns2:ConsultarLoteRpsEnvioResponse></env:Body></env:Envelope>

Preciso pegar com PHP as informações contidas em:

 

<InfNfse>

     <Numero>21</Numero>

     <CodigoVerificacao>SCJEYOH4M</CodigoVerificacao>

     <DataEmissao>2018-10-09T11:25:07.810-03:00</DataEmissao>

     <IdentificacaoRps>   

               <Numero>63</Numero>

   e 

<OutrasInformacoes>http://e-gov.betha.com.br/e-nota/visualizarnotaeletronica?link=15390

 

Tentei usando simplexml_load_string, DOMDocument e outras formas sem sucesso.
Acho que não usei corretamente as funções acima.

 

Desde já agradeço a ajuda.

 

 

Share this post


Link to post
Share on other sites

Consegui da forma abaixo

 

$dom = new DOMDocument;
$dom->loadXML($string_xml); 
$cod_ver = $dom->getElementsByTagName('CodigoVerificacao');
$nfs_num = $dom->getElementsByTagName('Numero');
$lk=$dom->getElementsByTagName('OutrasInformacoes');

$items = array();

foreach ($cod_ver as $codigo_ver) {
	$cod_verificacao = $codigo_ver->nodeValue;
}

$i=0;
foreach ($nfs_num as $nfs_numero) {
    if($i==0){
	$NFSe_num=$nfs_numero->nodeValue;
	}
	$i++;
}

foreach ($lk as $lk_ok) {
	$link=$lk_ok->nodeValue;
}

echo "<br>Link ".$link."<br>NFSe ".$NFSe_num."<br>Cod. Verificação ".$cod_verificacao;

 

Se souberem de uma maneira mais simples melhor

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By rafa-martin
      Boa tarde. Gostaria de saber como faço para que o usuário volte para a página que estava após fazer novo login.
       
      Por exemplo, o usuário depois de logado estava na pagina https://site.com.br/curso/2 e saiu fazendo logout. Após ele logar novamente, como redireciono esse usuário para a página que ele estava (https://site.com.br/curso/2)?
    • By Sapinn
      Fala galare, blz? Então, estou desenvolvendo um sistema de vendas e eu gostaria de saber como fazer para devolver o produto ao estoque no caso de cancelamento da venda ou na devolução.
      Por exemplo:
      Digamos que eu tenha um estoque com 10 fones de ouvido, 5 teclados e 20 pen drives.
      Então um cliente comprou 1 fone de ouvido, 1 teclado e 2 pendrive, eu já consigo ajustar o estoque para diminuir ficando:
      9 fones de ouvido, 4 teclados, 18 pen drives.
       
      Mas digamos que, por alguma razão, o cliente gostaria de devolver o pen drives e o fone de ouvido como eu faria para colocar ambos de volta ao seu respectivo estoque, ou seja ajustar os 9 fones e os 18 pen drive de volta para 10 fones e 20 pen drive??
    • By Giovanird
      Olá a todos!

      Tenho uma rotina no cron em um servidor que executa uma pagina onde é alterado o status de clientes.
      Preciso que após acessar e alterar o status do cliente, está pagina seja direcionada para uma outra pagina após uns 10 segundos.
      Executando diretamente pelo navegador a página é direcionada corretamente, quando executada pelo cron ela não direciona.
       
      No  cron estou usando o comando:
      curl -s https://www.dominio.com.br/alt.php
       
      No direcionamento coloquei um refresh javascript dentro de um header
      header( 'refresh:10; url=https://www.dominio.com.br/posalt.php?t=2');
       
      Obs.: Está pagina já roda a algum tempo no cron sem o direcionamento, agora que se fez necessário criar este direcionamento.
       

    • By danilo759
      Estou contratando um programador PHP para desenvolver um guia de programação, pago à vista.
    • By alysson122010
      Gostaria de saber como eu consigo recuperar dados do xml da seguinte forma. Tenho esse meu codigo php
       
      foreach($xml -> cadastros->exame as $item_3){  
                  $codigo = $item_3['codigo']; 
      }
       
      Que recuperar os exames desse xml:
      <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <resultados versao="20101018" origem="aol" datahora="2021-07-22 08:25:45">     <cadastros>         <pacientes>             <paciente codigo="250058718" codigo_lis="" codigo_aol="250058718" datanasc="" nome=" " sexo="M"/>         </pacientes>         <materiais>             <material codigo="856" descricao="plasma citratado"/>             <material codigo="879" descricao="sangue total EDTA"/>             <material codigo="543" descricao="soro"/>         </materiais>         <exame codigo="TSH" descricao="TSH - HORMÔNIO TIREOESTIMULANTE - Ultrassensivel" dataalteracao="21/11/2019 17:37:15">             <linhasresultado>                 <linha codigo="1240" descricao="TSH - HORMÔNIO TIREOESTIMULANTE Ultrasensivel" unidade="µUI/mL"/>             </linhasresultado>             <valorreferencia><![CDATA[0 a 3 dias: 1,100 a 15,700 µUI/mL 3 dias a 2 meses e 14 dias: 0,600 a 9,200 µUI/mL 2meses 14dias a 1ano 3meses:0,400 a 6,000 µUI/mL 1 ano e 3 meses a 6 anos: 0,400 a 5,200 µUI/mL 6 a 15 anos: 0,300 a 4,200 µUI/mL 15 a 60 anos: 0,400 a 4,300 µUI/mL 60 a 80 anos: 0,400 a 5,800 µUI/mL Superior a 80 anos: 0,400 a 6,700 µUI/mL Gestantes: Primeiro Trimestre: 0,100 a 3,600 µUI/mL Segundo Trimestre: 0,400 a 4,300 µUI/mL Terceiro Trimestre: 0,400 a 4,300 µUI/mL ]]></valorreferencia>         </exame>         <exame codigo="LIPAS" descricao="LIPASE" dataalteracao="28/03/2019 09:23:47">             <linhasresultado>                 <linha codigo="883" descricao="LIPASE" unidade="U/L"/>             </linhasresultado>             <valorreferencia><![CDATA[Inferior a 60,0 U/L]]></valorreferencia>         </exame>         <exame codigo="T4L" descricao="T4 - TIROXINA LIVRE" dataalteracao="16/04/2019 14:43:34">             <linhasresultado>                 <linha codigo="1174" descricao="T4 - TIROXINA LIVRE" unidade="ng/dL"/>             </linhasresultado>             <valorreferencia><![CDATA[0,70 a 1,80  ng/dL]]></valorreferencia>         </exame>         <exame codigo="AMILA" descricao="AMILASE TOTAL" dataalteracao="16/04/2019 12:02:51">             <linhasresultado>                 <linha codigo="83" descricao="AMILASE TOTAL" unidade="U/L"/>             </linhasresultado>             <valorreferencia><![CDATA[Até  115,0 U/L]]></valorreferencia>         </exame>         <exame codigo="FA" descricao="FOSFATASE ALCALINA" dataalteracao="15/04/2019 11:51:01">             <linhasresultado>                 <linha codigo="542" descricao="FOSFATASE ALCALINA" unidade="U/L"/>             </linhasresultado>             <valorreferencia><![CDATA[0 a 14 dias: 82 a 249 U/L 15 dias a 1 ano: 122 a 473 U/L Sexo Feminino: Feminino 1 a 9 anos: 149 a 301 U/L Feminino 10 a 12 anos: 127 a 326 U/L Feminino 13 a 14 anos: 62 a 212 U/L Feminino 15 a 16 anos: 52 a 120 U/L Feminino 17 a 18 anos: 45 a 97 U/L Adultos: 25 a 100 U/L Sexo Masculino: Masculino 1 a 9 anos: 149 a 301 U/L Masculino 10 a 12 anos: 127 a 326 U/L Masculino 13 a 14 anos: 129 a 437 U/L Masculino 15 a 16 anos: 78 a 268 U/L Masculino 17 a 18 anos: 40 a 129 U/L Adultos: 25 a 100 U/L Referência: Fontes R, Cavalari E, Vieira Neto L, et al. Alkaline phosphatase: reference interval transference from CALIPER to a pediatric Brazilian population. J Bras Patol Med Lab. 2018; 54(4): 227-31.]]></valorreferencia>         </exame>         <exame codigo="HBGLI3" descricao="HEMOGLOBINA GLICADA" dataalteracao="28/06/2021 09:26:18">             <linhasresultado>                 <linha codigo="12976" descricao="Hb SA1c - Forma estável" unidade="%"/>                 <linha codigo="16572" descricao="Glicose Média Estimada (GME)" unidade="mg/dL"/>             </linhasresultado>             <valorreferencia><![CDATA[ Hemoglobina Glicada - Hb SA1c Normal: Inferior a 5.7% Risco aumentado para Diabetes Mellitus: 5,7 a 6,4% Diabete Mellitus: Igual ou superior a 6,5% Para o diagnóstico de Diabetes Mellitus a dosagem  de HbA1c deve ser confirmada com novo exame em dia diferente,exceto se houver hiperglicemia inequívo- ca com descompensação metabólica aguda ou sintomas clássicos da doença. A Associação Americana de Diabetes recomenda como  meta para o tratamento de pacientes diabéticos re- sultados de HbA1c iguais ou inferiores a 7%.  Conforme recomendado pela American Diabetes Asso- ciation(ADA) e European Association for the Study  of Diabetes (EASD), estamos liberando cálculo da  glicose média estimada(GME). Este cálculo é obtido a partir do valor de HbA1c através de uma fórmula  matemática baseada em uma relação linear entre os  níveis de HbA1c e a glicose média sanguínea.  Ref. Diabetes Care, 2014; 37 (suppl 1): 81-90/Diretri- zes da Sociedade Brasileira de Diabestes/2013-2014 :9-11.]]></valorreferencia>         </exame>         <exame codigo="COAG4" descricao="COAGULOGRAMA IV" dataalteracao="06/09/2019 14:27:19">             <linhasresultado>                 <linha codigo="14811" descricao="PLAQUETAS - Contagem" unidade="/uL"/>             </linhasresultado>             <valorreferencia><![CDATA[Atividade de Protrombina: 70 a 100% RNI: 0,80 a 1,20 Ratio: Inferior a 1,25 Plaquetas: 150.000 a 450.000/uL RNI - Intervalo de Refêrencias(Alvos Terapeuticos) Recomendações do American College of Physicians, National Heart Lung and Blood Institute for Haematology.]]></valorreferencia>         </exame>     </cadastros>     <solicitacao codigo="238228701" codigo_aol="238228701" paciente="250058718">         <amostras>             <amostra codigo="0" descricao="Basal" material="856"/>             <amostra codigo="1" descricao="Basal" material="879"/>             <amostra codigo="2" descricao="Basal" material="543"/>         </amostras>         <exame codigo="FA" dataresultado="20/07/2021 04:27:20" metodo="Colorimétrico" observacao="" normal="S">             <resultado amostra="2" linharesultado="542" resultado="51,0"/>         </exame>         <exame codigo="HBGLI3" dataresultado="20/07/2021 05:48:28" metodo="Imunoensaio Turbidimétrico de Inibição " observacao="" normal="S">             <resultado amostra="1" linharesultado="12976" resultado="5,1"/>             <resultado amostra="1" linharesultado="16572" resultado="100"/>         </exame>         <exame codigo="TSH" dataresultado="20/07/2021 04:27:20" metodo="Eletroquimioluminescência" observacao="Considerar a metodologia Quimioluminescência para a análise deste teste." normal="S">             <resultado amostra="2" linharesultado="1240" resultado="2,000"/>         </exame>         <exame codigo="AMILA" dataresultado="20/07/2021 04:27:20" metodo="Colorimétrico Enzimático" observacao="Considerar a metodologia Quimioluminescência para a análise deste teste." normal="S">             <resultado amostra="2" linharesultado="83" resultado="83,0"/>         </exame>         <exame codigo="COAG4" dataresultado="21/07/2021 13:29:20" metodo="Coagulométrico/Sistema Automatizado" observacao="" normal="S">             <resultado amostra="0" linharesultado="14811" resultado="305000"/>         </exame>         <exame codigo="LIPAS" dataresultado="20/07/2021 04:27:20" metodo="Colorimétrico Enzimático" observacao="" normal="S">             <resultado amostra="2" linharesultado="883" resultado="47,0"/>         </exame>         <exame codigo="T4L" dataresultado="20/07/2021 04:27:20" metodo="Eletroquimioluminescência" observacao="Considerar a metodologia Quimioluminescência para a análise deste teste." normal="S">             <resultado amostra="2" linharesultado="1174" resultado="1,16"/>         </exame>     </solicitacao> </resultados>  
      Até ai consegui e conseguir mostrar o valor de codigo="codigo do exame". Porém preciso fazer uma segunda consulta da parte :
       
       
      <solicitacao codigo="238228701" codigo_aol="238228701" paciente="250058718">         <amostras>             <amostra codigo="0" descricao="Basal" material="856"/>             <amostra codigo="1" descricao="Basal" material="879"/>             <amostra codigo="2" descricao="Basal" material="543"/>         </amostras>         <exame codigo="FA" dataresultado="20/07/2021 04:27:20" metodo="Colorimétrico" observacao="" normal="S">             <resultado amostra="2" linharesultado="542" resultado="51,0"/>         </exame>         <exame codigo="HBGLI3" dataresultado="20/07/2021 05:48:28" metodo="Imunoensaio Turbidimétrico de Inibição " observacao="" normal="S">             <resultado amostra="1" linharesultado="12976" resultado="5,1"/>             <resultado amostra="1" linharesultado="16572" resultado="100"/>         </exame>         <exame codigo="TSH" dataresultado="20/07/2021 04:27:20" metodo="Eletroquimioluminescência" observacao="Considerar a metodologia Quimioluminescência para a análise deste teste." normal="S">             <resultado amostra="2" linharesultado="1240" resultado="2,000"/>         </exame>         <exame codigo="AMILA" dataresultado="20/07/2021 04:27:20" metodo="Colorimétrico Enzimático" observacao="Considerar a metodologia Quimioluminescência para a análise deste teste." normal="S">             <resultado amostra="2" linharesultado="83" resultado="83,0"/>         </exame>         <exame codigo="COAG4" dataresultado="21/07/2021 13:29:20" metodo="Coagulométrico/Sistema Automatizado" observacao="" normal="S">             <resultado amostra="0" linharesultado="14811" resultado="305000"/>         </exame>         <exame codigo="LIPAS" dataresultado="20/07/2021 04:27:20" metodo="Colorimétrico Enzimático" observacao="" normal="S">             <resultado amostra="2" linharesultado="883" resultado="47,0"/>         </exame>         <exame codigo="T4L" dataresultado="20/07/2021 04:27:20" metodo="Eletroquimioluminescência" observacao="Considerar a metodologia Quimioluminescência para a análise deste teste." normal="S">             <resultado amostra="2" linharesultado="1174" resultado="1,16"/>         </exame>     </solicitacao>  
      Onde eu consiga pegar o codigo que recuperei acima e liste os resultados da parte de solicitacao referente ao codigo="codigo do exame que eu listei a cima" mas nao to conseguindo fazer. Como eu posso fazer isso?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.