Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Como leer este xml en PHP?

Estas en el tema de ¿Como leer este xml en PHP? en el foro de PHP en Foros del Web. Hola a todos los del foro... tengo un archivo php llamado parameter.php que construye un xlm de esta manera: Código PHP: <?php $parameter  =  $_POST ...
  #1 (permalink)  
Antiguo 23/08/2013, 10:41
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 2 meses
Puntos: 3
Pregunta ¿Como leer este xml en PHP?

Hola a todos los del foro...

tengo un archivo php llamado parameter.php que construye un xlm de esta manera:
Código PHP:
<?php
$parameter 
$_POST["valor"];
$bVipLevel true;

    
$param = array();
    
$param [] = array(
    
'result' => validate($parameter,$bVipLevel),
    );
         
    
$doc = new DOMDocument();
     
    
$doc->formatOutput true;
     
    
$r $doc->createElement"parameter" );
     
    
$doc->appendChild$r );
     
    foreach( 
$param as $parameters )
    {
    
$b $doc->createElement"parameter" );
     
    
$result $doc->createElement"bVipLevelEnabled" );
    
$result->appendChild(
    
$doc->createTextNode$parameters['result'] )
    );
    
$b->appendChild$result );     
    
$r->appendChild$b );
    }
     
    echo 
$doc->saveXML();

function 
validate($parameter,$bVipLevel){
     
$result "";
     if(
trim($parameter) <> "")
     { 
        if(
$bVipLevel == true)
          
$result="YES";
        else
          
$result "NO";
          
          return 
$result;
     }

?>
Al dar click derecho ver codigo fuente de la pagina en el browser se muestra lo siguiente:
Código:
<?xml version="1.0"?>
<parameter>
  <parameter>
    <bVipLevelEnabled>YES</bVipLevelEnabled>
  </parameter>
</parameter>
Luego en otro sitio por web-services consumo los servicios de esta pagina lo hago de esta manera:
Código PHP:
<?php
$data 
= array();
        
$data['valor']="Y";
        
        
define("URL_BINGO_FUN_HOUSE","http://localhost/Servidor/parameter.php");
        
        
$post_str '';
        foreach(
$data as $key=>$value){
          
$post_str .= $key.'='.urlencode($value).'&';    
        }
          
$post_str substr($post_str0, -1); 
        
        
$ch curl_init(); // Inicializo el servicio CURL
        
curl_setopt($chCURLOPT_URL,URL_BINGO_FUN_HOUSE); 
        
curl_setopt($ch,CURLOPT_POSTTRUE); 
        
curl_setopt($chCURLOPT_POSTFIELDS,$post_str); 
        
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); 
        
        
$response curl_exec($ch); 
            
        if(
$response == "YES")
          echo 
"print yes!";
        else
          echo 
"print ".$response."!!";
        
        
curl_close($ch); // Cierro el servicio CURL
?>
El problema que tengo es que quiero saber que me retorna parameter.php(YES o NO) lo hago en el IF pero se esta yendo por el else osea el valor no es un YES. Entonces creo que debo leerlo como un xml... alguien sabe como ayudarme por favor ?
  #2 (permalink)  
Antiguo 23/08/2013, 10:48
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: ¿Como leer este xml en PHP?

Puedes probar las funciones de php para el parseo de xml aca esta la documentación

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 23/08/2013, 10:52
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 2 meses
Puntos: 3
De acuerdo Respuesta: ¿Como leer este xml en PHP?

Gracias amigo... probare
  #4 (permalink)  
Antiguo 23/08/2013, 11:05
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 2 meses
Puntos: 3
Pregunta Respuesta: ¿Como leer este xml en PHP?

Amigo intente con esto pero me da error:
Código PHP:
$parser=xml_parser_create();

          function 
char($parser,$data)
          {
            echo 
$data;
          }
        
            
xml_set_character_data_handler($parser,"char");
            
$fp=fopen($response,"r");
        
          while (
$data=fread($fp,4096))
          {
          
xml_parse($parser,$data,feof($fp)) or 
          die (
sprintf("XML Error: %s at line %d"
          
xml_error_string(xml_get_error_code($parser)),
          
xml_get_current_line_number($parser)));
          }
        
          
xml_parser_free($parser); 
Errores:
Cita:
Warning: fopen(<?xml version="1.0"?> <parameter> <parameter> <bVipLevelEnabled>YES</bVipLevelEnabled> </parameter> </parameter> ): failed to open stream: No such file or directory in C:\xampp\htdocs\Cliente\cliente.php on line 31

Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Cliente\cliente.php on line 33
  #5 (permalink)  
Antiguo 23/08/2013, 11:14
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: ¿Como leer este xml en PHP?

Prueba este codigo:

Código PHP:
Ver original
  1. $response = curl_exec($ch);
  2.  
  3.  
  4. xml_parse_into_struct($p, $response, $vals, $index);
  5.  
  6. print_r($index);


Que te muestra?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #6 (permalink)  
Antiguo 23/08/2013, 11:22
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: ¿Como leer este xml en PHP?

Gracias por tu respuesta... me muestra lo siguiente:

Cita:
Array ( [PARAMETER] => Array ( [0] => 0 [1] => 1 [2] => 3 [3] => 4 [4] => 5 [5] => 6 ) [BVIPLEVELENABLED] => Array ( [0] => 2 ) )
  #7 (permalink)  
Antiguo 23/08/2013, 11:32
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: ¿Como leer este xml en PHP?

Mira este código, lo hice de tal manera para que veas como funciona xml_parse_into_struct, en la variable $vals se guarda todo el array completo de los valores de cada uno de los tags xml, y el $index se guarda la posición de cada tag en el array $vals, asi que primero hay que conocer en que posición esta el tag que estamos buscando y después de esto ubicarlo en el array principal

Código PHP:
Ver original
  1. //Use esto para probar pero ya sabes que va es esto  $response = curl_exec($ch);
  2. $response = <<<EOD
  3. <?xml version="1.0"?>
  4. <parameter>
  5.   <parameter>
  6.     <bVipLevelEnabled>YES</bVipLevelEnabled>
  7.   </parameter>
  8. </parameter>
  9. EOD;
  10.  
  11. $p = xml_parser_create();
  12.  
  13. xml_parse_into_struct($p, $response, $vals, $index);
  14.  
  15. var_export($index);
  16. echo "<br><br>";
  17. var_export($vals);
  18. echo "<br><br>";
  19. var_export($vals[2]);
  20. echo "<br><br>";
  21.  
  22. if($vals[2]['value'] == 'YES'){
  23.     echo "valor de BVIPLEVELENABLED == YES";
  24. }else{
  25.     echo "valor de BVIPLEVELENABLED != YES";


Espero se entienda

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #8 (permalink)  
Antiguo 23/08/2013, 11:53
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 12 años, 2 meses
Puntos: 3
De acuerdo Respuesta: ¿Como leer este xml en PHP?

Perfecto amigos muchisimas gracias por sus respuestas se les agradece enormemente

Etiquetas: xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:54.