Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com XML vários nós com PHP


Jorge Jr

Pergunta

Salve meus prezados,

Comecei agora a utilizar XML com PHP é estou com problema para visualizar o conteúdo do XML com vários nós no PHP.

São três pacientes com seus exames e resultados, porem a listagem só mostra o primeiro exame para todos os pacientes.

CT-0000008502 - ADAO VIANA ALVES - 26/08/2017
Exames 
47778 - LAB6003864 - CT-0000008502 - CL - CLORO
Resultado
1 - LAB6003864 - CT-0000008502 - CL - 100 - - 96 - 106 mEq/l - mEq/l - - 
2 - LAB6003864 - CT-0000008502 - CL - - - Metodo: Colorimetrico - - - 
Exames 
47779 - LAB6003864 - CT-0000008502 - COL - COLESTEROL
Resultado
1 - LAB6003864 - CT-0000008502 - CL - 100 - - 96 - 106 mEq/l - mEq/l - - 
2 - LAB6003864 - CT-0000008502 - CL - - - Metodo: Colorimetrico - - - 
Exames 
47781 - LAB6003864 - CT-0000008502 - CRE - CREATININA
Resultado
1 - LAB6003864 - CT-0000008502 - CL - 100 - - 96 - 106 mEq/l - mEq/l - - 
2 - LAB6003864 - CT-0000008502 - CL - - - Metodo: Colorimetrico - - - 

Segue o XML e o arquivo php. Qualquer ajuda será muito bem vinda, estou a uma semana tentando resolver isso.

Grato,

Jorge

<registro>
<data>27/08/2017</data>
<hora>30/12/1899 09:20:06</hora>
<paciente>
<codigoint>CT-0000008502</codigoint>
<dcadastro>26/08/2017</dcadastro>
<nome>ADAO VIANA ALVES</nome>
<sexo>M</sexo>
<datanasc>15/07/1966</datanasc>
<cpaciente>LAB6003864</cpaciente>
<dconv>PARTICULAR</dconv>
<horario>18:34</horario>
<nomedico>DR. ADELINO PANIAGO</nomedico>
<codnet>LAB6</codnet>
<exames>
<controle>47778</controle>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<cexame>CL</cexame>
<descricao>CLORO</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<data>26/08/2017</data>
<cexame>CL</cexame>
<controle>1</controle>
<resultado>100</resultado>
<resultado1></resultado1>
<unidade>mEq/l</unidade>
<texto></texto>
<normal>96 - 106 mEq/l</normal>
</resultados>
<resultados>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<data>26/08/2017</data>
<cexame>CL</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Metodo: Colorimetrico</normal>
</resultados>
</exames>
<exames>
<controle>47779</controle>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<cexame>COL</cexame>
<descricao>COLESTEROL</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<data>26/08/2017</data>
<cexame>COL</cexame>
<controle>1</controle>
<resultado>190</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>Desejavel: menor que 200 mg/dl</normal>
</resultados>
<resultados>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<data>26/08/2017</data>
<cexame>COL</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Metodo: Enz. Trinder</normal>
</resultados>
</exames>
<exames>
<controle>47781</controle>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<cexame>CRE</cexame>
<descricao>CREATININA</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<data>26/08/2017</data>
<cexame>CRE</cexame>
<controle>1</controle>
<resultado>1,1</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>0,5 - 1,2 mg/dl</normal>
</resultados>
<resultados>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<data>26/08/2017</data>
<cexame>CRE</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Metodo: Jaffe Mod.</normal>
</resultados>
</exames>
<exames>
<controle>47780</controle>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<cexame>URE</cexame>
<descricao>UREIA</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<data>26/08/2017</data>
<cexame>URE</cexame>
<controle>1</controle>
<resultado>19</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>15 - 40 mg/dl</normal>
</resultados>
<resultados>
<cpaciente>LAB6003864</cpaciente>
<codigoint>CT-0000008502</codigoint>
<data>26/08/2017</data>
<cexame>URE</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Metodo: Urease</normal>
</resultados>
</exames>
</paciente>
<paciente>
<codigoint>CT-0000008504</codigoint>
<dcadastro>26/08/2017</dcadastro>
<nome>KAELYSON PEREIRA LOPES</nome>
<sexo>M</sexo>
<datanasc>29/12/2016</datanasc>
<cpaciente>LAB6005553</cpaciente>
<dconv>PARTICULAR</dconv>
<horario>18:37</horario>
<nomedico>DR. ADELMO AIRES NEGRE</nomedico>
<codnet>LAB6</codnet>
<exames>
<controle>47789</controle>
<cpaciente>LAB6005553</cpaciente>
<codigoint>CT-0000008504</codigoint>
<cexame>CRE</cexame>
<descricao>CREATININA</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6005553</cpaciente>
<codigoint>CT-0000008504</codigoint>
<data>26/08/2017</data>
<cexame>CRE</cexame>
<controle>1</controle>
<resultado>1,1</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>0,5 - 1,2 mg/dl</normal>
</resultados>
<resultados>
<cpaciente>LAB6005553</cpaciente>
<codigoint>CT-0000008504</codigoint>
<data>26/08/2017</data>
<cexame>CRE</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Metodo: Jaffe Mod.</normal>
</resultados>
</exames>
<exames>
<controle>47787</controle>
<cpaciente>LAB6005553</cpaciente>
<codigoint>CT-0000008504</codigoint>
<cexame>GLI</cexame>
<descricao>GLICEMIA</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6005553</cpaciente>
<codigoint>CT-0000008504</codigoint>
<data>26/08/2017</data>
<cexame>GLI</cexame>
<controle>1</controle>
<resultado>110</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>70 -100 mg/dl em jejum.</normal>
</resultados>
<resultados>
<cpaciente>LAB6005553</cpaciente>
<codigoint>CT-0000008504</codigoint>
<data>26/08/2017</data>
<cexame>GLI</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>METODO: Enzimatico</normal>
</resultados>
</exames>
<exames>
<controle>47788</controle>
<cpaciente>LAB6005553</cpaciente>
<codigoint>CT-0000008504</codigoint>
<cexame>URE</cexame>
<descricao>UREIA</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6005553</cpaciente>
<codigoint>CT-0000008504</codigoint>
<data>26/08/2017</data>
<cexame>URE</cexame>
<controle>1</controle>
<resultado>17</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>15 - 40 mg/dl</normal>
</resultados>
<resultados>
<cpaciente>LAB6005553</cpaciente>
<codigoint>CT-0000008504</codigoint>
<data>26/08/2017</data>
<cexame>URE</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Metodo: Urease</normal>
</resultados>
</exames>
</paciente>
<paciente>
<codigoint>CT-0000008503</codigoint>
<dcadastro>26/08/2017</dcadastro>
<nome>MAGDA FERNANDES OLIVEIRA</nome>
<sexo>F</sexo>
<datanasc>28/06/1976</datanasc>
<cpaciente>LAB6002872</cpaciente>
<dconv>PARTICULAR</dconv>
<horario>18:36</horario>
<nomedico>DR. ADELMO AIRES NEGRE</nomedico>
<codnet>LAB6</codnet>
<exames>
<controle>47782</controle>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<cexame>COL</cexame>
<descricao>COLESTEROL</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>COL</cexame>
<controle>1</controle>
<resultado>180</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>Desejavel: menor que 200 mg/dl</normal>
</resultados>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>COL</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Metodo: Enz. Trinder</normal>
</resultados>
</exames>
<exames>
<controle>47783</controle>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<cexame>HDL</cexame>
<descricao>COLESTEROL - HDL</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>HDL</cexame>
<controle>1</controle>
<resultado>40</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>Menor que 40mg/dl: Baixo</normal>
</resultados>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>HDL</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Maior que 60mg/dl: Desejavel</normal>
</resultados>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>HDL</cexame>
<controle>3</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Metodo: Enz. Trinder</normal>
</resultados>
</exames>
<exames>
<controle>47785</controle>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<cexame>LDL</cexame>
<descricao>COLESTEROL - LDL</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>LDL</cexame>
<controle>1</controle>
<resultado>100</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>Menor que 100mg/dl: Otimo</normal>
</resultados>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>LDL</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>100 a 129mg/d: Desejavel</normal>
</resultados>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>LDL</cexame>
<controle>3</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal></normal>
</resultados>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>LDL</cexame>
<controle>4</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>160 a 189mg/dl: Alto</normal>
</resultados>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>LDL</cexame>
<controle>5</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Mai. / Igual a 190mg/dl: Muito Alt</normal>
</resultados>
</exames>
<exames>
<controle>47786</controle>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<cexame>VLDL</cexame>
<descricao>COLESTEROL - VLDL</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>VLDL</cexame>
<controle>1</controle>
<resultado>12</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>Menor que 30 mg/dl</normal>
</resultados>
</exames>
<exames>
<controle>47784</controle>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<cexame>TRI</cexame>
<descricao>TRIGLICERIDIOS</descricao>
<longo></longo>
<laudoLongo></laudoLongo>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>TRI</cexame>
<controle>1</controle>
<resultado>175</resultado>
<resultado1></resultado1>
<unidade>mg/dl</unidade>
<texto></texto>
<normal>Menor que 200 mg/dl</normal>
</resultados>
<resultados>
<cpaciente>LAB6002872</cpaciente>
<codigoint>CT-0000008503</codigoint>
<data>26/08/2017</data>
<cexame>TRI</cexame>
<controle>2</controle>
<resultado></resultado>
<resultado1></resultado1>
<unidade></unidade>
<texto></texto>
<normal>Metodo: Enz. Trinder</normal>
</resultados>
</exames>
</paciente>
</registro>
 
O arquivo em PHP - envia.php
<?php

$xml = simplexml_load_file('teste.xml');

foreach($xml->paciente as $paciente)
{
   if(isset($paciente))
   {
            $codigoint = $paciente->codigoint;
            $nome = $paciente->nome;
            $dcadastro = $paciente->dcadastro;

            echo $codigoint .' - ';
            echo $nome .' - ';
            echo $dcadastro .'<br>';

            foreach($xml->paciente->exames as $exames)
            {
            if(isset($exames))
              {
                $controle = $exames->controle;
                $cpaciente = $exames->cpaciente;
                $codigoint = $exames->codigoint;
                $cexame = $exames->cexame;
                $descricao = $exames->descricao;

                echo ' Exames <br>';
                echo $controle .' - ';
                echo $cpaciente .' - ';
                echo $codigoint .' - ';
                echo $cexame .' - ';
                echo $descricao .'<br>';
                echo 'Resultado<br>';
                
                foreach($xml->paciente->exames->resultados as $resultados)
                {
                if(isset($resultados))
                  {
                    $controle = $resultados->controle;
                    $cpaciente = $resultados->cpaciente;
                    $codigoint = $resultados->codigoint;
                    $cexame = $resultados->cexame;
                    $resultado = $resultados->resultado;
                    $resultado1 = $resultados->resultado1;
                    $normal = $resultados->normal;
                    $unidade = $resultados->unidade;
                    $texto = $resultados->texto;

                    echo $controle.' - ';
                    echo $cpaciente.' - ';
                    echo $codigoint.' - ';
                    echo $cexame.' - ';
                    echo $resultado.' - ';
                    echo $resultado1.' - ';
                    echo $normal.' - ';
                    echo $unidade.' - ';
                    echo $texto.' - ';
                    echo "<br>";
                }
                }
            }
            }
   }
}

?>

Editado por Jorge Jr
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
1 hora atrás, Markus Magnus disse:

Os foreach estão errados.


<?php
foreach($xml->paciente as $paciente) { // Essa está certo
  //...
  foreach($paciente->exames as $exames) { 
    //...
    foreach($exames->resultados as $resultados) {
  	  //...
    }
  }
}
?>

 

Obrigado Markus, deu certo. Valeu

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...