Foros del Web » Programando para Internet » PHP »

PHP OO problema con api y xml no logro lo que busco

Estas en el tema de problema con api y xml no logro lo que busco en el foro de PHP en Foros del Web. hola espero se encuentren bien, soy nuevo en este foro y me gustaria poder recibir alguna ayuda de alguno de ustedes si es posible :P. ...
  #1 (permalink)  
Antiguo 07/10/2011, 19:32
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Pregunta problema con api y xml no logro lo que busco

hola espero se encuentren bien, soy nuevo en este foro y me gustaria poder recibir alguna ayuda de alguno de ustedes si es posible :P.

tengo un proyecto de una web que involucra datos de xbox, tengo un api que consulta esos datos, pero el problema que tengo es que quisiera que me los mostrara en un archivo xml al consultarlo con una variable que seria el gamertag, en directo quisiera lograr algo como esto:

http://api.xboxleaders.com/v2/?gamertag=malatos&format=xml

donde malatos es el gamertag, y que al escribir otro gamertag diferente y dar enter en la pagina me muestre sus respectivos valores igual que en esa pagina que les puse, alguna idea o alguien que me pueda guiar para lograr mi objetivo?
  #2 (permalink)  
Antiguo 07/10/2011, 19:35
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: problema con api y xml no logro lo que busco

Para hacer eso necesitas clases como DOMDocument, SumpleXML o similares y no es muy dificil.

Te recomiendo este aporte

http://www.forosdelweb.com/f18/aport...ml-dom-792348/

y este otro

http://www.forosdelweb.com/f18/como-...0/#post4008153

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 07/10/2011, 22:10
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: problema con api y xml no logro lo que busco

no se si me equivoque pero esos ejemplos son para leer un xml ya creado?, disculpa si no es asi soy nuevo en esto y apenas le voy agarrando la onda, se programar en php pero esto que comienzo es nuevo para mi jejeje
  #4 (permalink)  
Antiguo 07/10/2011, 22:15
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: problema con api y xml no logro lo que busco

Bueno y más exactamente que es lo que necesitas? en la URL cambias cada usuario, faltaría leer la información o me equivoco? Porque no me explicas.

?gamertag=ESTO ES LO QUE CAMBIA&format=xml

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 08/10/2011, 02:06
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Pregunta Respuesta: problema con api y xml no logro lo que busco

antes que nada muchas gracias por interesarte en ayudarme y sobre todo brindarme parte de tu tiempo en verdad muchas gracias :), y por otro lado exacto eso es lo que quiero que solo al cambiar el nombre genere todo lo demas, asi tal cual lo pusiste, tengo el php que pide los datos al servidor, necesitaria hacer que me los genere en un xml.

mi idea es poder hacer algo como en este link:

http://api.xboxleaders.com/v2/

ahi tiene la opcion de ingresar el nombre, si quieres verlo en accion genera uno en xml con este nombre: malatos y ya generado el xml si quieres pon este otro ahi mismo en el xml: shaken emo

ahi mismo te deja elegir en que formato quieres el resultado si en xml o en json, a mi solo me interesa poder generar los datos en xml, pero eso seria exactamente lo que deseo hacer, podrias ayudarme o guiarme?
  #6 (permalink)  
Antiguo 08/10/2011, 09:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: problema con api y xml no logro lo que busco

Pues dime que conocimientos tienes. Sabes usar formularios? leer variables por $_POST o $_GET? sino lee esto:

http://www.php.net/manual/es/languag...s.external.php

Envías el formulario y en otra página recibes el usuario. Puedes usar funciones como file_get_contents para recibir todo el contenido del XML, le concatenas el usuario y haces un par de validaciones.

Ya si quieres ordenar bien el contenido del XML debes usar clases para leer el XML.

Espero que sea lo que necesites. Cualquier cosa avisame y lo revisamos.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 08/10/2011, 11:47
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: problema con api y xml no logro lo que busco

hola andres gracias de nuevo, mira se y manejo php digamos descentemente jejeje no soy un gran programador en el pero trato de defenderme, de cualquier forma lo que no sepa creeme que tratare de hacerlo ;), por el formulario no tengo problema, pero por el xml por ahi si digamos que necesitare que me ilumines un poco, de hecho el xml de la pag anterior que te di es igual a como lo necesito, es mas los valores que me genera el api son los mismos, pero tu me dices y yo leo jejeje cuidate y un saludote, espero no aburrirte con esto a la larga si me tardo :P
  #8 (permalink)  
Antiguo 08/10/2011, 11:53
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: problema con api y xml no logro lo que busco

Sigo con la duda...

¿Quieres leer ese XML, pasándole una variable desde un formulario?
¿Quieres crear un XML con datos que tienes?

¿Qué es lo que quieres realmente? y porque no nos muestra el código que llevas.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #9 (permalink)  
Antiguo 08/10/2011, 16:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Exclamación Respuesta: problema con api y xml no logro lo que busco

mira en este [URL="http://kmb.interferencia.mx/xbox.rar"]link[/URL] esta el archivo php que tengo, ahora lo que necesito es de alguna forma generar un link como el que pusimos los dos, algo asi:

http://api.xboxleaders.com/v2/?gamertag=ESTO ES LO QUE CAMBIA&format=xml (jejeje te lo robe :P), asi como en la pagina, tener un form o simplemente buscar la info al cambiar el nombre directamente en la pagina asi tal cual funciona en el ejemplo que te deje de esta pagina:

http://api.xboxleaders.com/v2/


el php que te deje arriba es el que pide los datos al servidor yo hice una pequeña prueba con esto pero me genera todo en json y lo necesito en xml igual de ordenado como en la misma pagina que te deje:

Código PHP:
Ver original
  1. <?php
  2. require('file.php');
  3.  
  4. $xbox = new XboxGamercard();
  5. $xbox->setGamertag('palabrin');
  6. $xbox->setRegion('en-GB');
  7. $data = $xbox->fetchData();
  8.  
  9. echo json_encode($data);

donde file seria el archivo que te adjunte arriba y palabrin seria el gamertag, palabrin como me dijiste se podria cambiar usando un formulario para poder introducir ahi nombres diferentes pero mi problema es generar el xml, si me explique un poco mejor? o te hize mas lios?? :s jejeje dejame saber y de nuevo mil gracias
  #10 (permalink)  
Antiguo 08/10/2011, 16:49
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: problema con api y xml no logro lo que busco

"palabrin" lo puedes leer mediante $_GET['palabrin']

Y para crear un documento XML pues algo fácil sería así:

Código PHP:
<?php
require('file.php');
 
$xbox = new XboxGamercard();
$xbox->setGamertag('palabrin');
$xbox->setRegion('en-GB');
$data $xbox->fetchData();

<?
php if ( $_GET['format'] == 'xml' ) { ?>
     <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
        <XboxAPI>
            <User>
                <Gamertag><![CDATA[ "<?php echo $data->gamertarg?>" ]]></Gamertag>   
                <IsValid><![CDATA[ "<?php echo $data->is_valid?>" ]]></IsValid>
                <ProfileLink><![CDATA[ "<?php echo $data->profile_link?>" ]]></ProfileLink>      
            </User>
        </XboxAPI>
<?php ?>
¿Era esto lo que querías?

Última edición por kiko's; 08/10/2011 a las 16:56
  #11 (permalink)  
Antiguo 08/10/2011, 17:18
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Pregunta Respuesta: problema con api y xml no logro lo que busco

diablos gracias si es algo mas o menos asi pero mira, lo puse tal cual en mi server y me dio un error en la linea 9 mira lo dejo [URL="http://kmb.interferencia.mx/example2.php"]aqui[/URL], para poder generar el xml directamente solo cambiando palabrin en el link como seria? perdon por liarlos tanto :s
  #12 (permalink)  
Antiguo 08/10/2011, 17:23
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: problema con api y xml no logro lo que busco

Si ya tienes ese JSON puedes convertirlo a XML usando por ejemplo XML_Serializer de PEAR y ya leerlo como XML ya sea en la misma URL o como quieras. Descargate PEAR + XML/Util.php + XML_Serializer y con este código ya tendrías un XML:

Código PHP:
Ver original
  1. <?php
  2. require('xbox.php');
  3. require("Serializer.php");
  4.  
  5. header("Content-type: text/xml");
  6.  
  7. function json_to_xml($json) {
  8.     $serializer = new XML_Serializer();
  9.     $obj = json_decode($json);
  10.     if ($serializer->serialize($obj)) {
  11.         return $serializer->getSerializedData();
  12.     }
  13.     else {
  14.         return null;
  15.     }
  16. }
  17.  
  18. $xbox = new XboxGamercard();
  19. $xbox->setGamertag('malatos');
  20. $xbox->setRegion('en-GB');
  21. $data = $xbox->fetchData();
  22. $res = json_encode($data);
  23.  
  24. echo json_to_xml($res);

Si no te gusta PEAR en google hay alternativas para convertir ese objeto en XML.

PD: muestra el código que te está dando error.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 08/10/2011 a las 17:32
  #13 (permalink)  
Antiguo 08/10/2011, 17:35
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: problema con api y xml no logro lo que busco

el codigo con error es el que kiko's posteo mira:

Código PHP:
Ver original
  1. <?php
  2. require('file.php');
  3.  
  4. $xbox = new XboxGamercard();
  5. $xbox->setGamertag('palabrin');
  6. $xbox->setRegion('en-GB');
  7. $data = $xbox->fetchData();
  8.  
  9. <?php if ( $_GET['format'] == 'xml' ) { ?>
  10.      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  11.         <XboxAPI>
  12.             <User>
  13.                 <Gamertag><![CDATA[ "<?php echo $data->gamertarg?>" ]]></Gamertag>  
  14.                 <IsValid><![CDATA[ "<?php echo $data->is_valid?>" ]]></IsValid>
  15.                 <ProfileLink><![CDATA[ "<?php echo $data->profile_link?>" ]]></ProfileLink>      
  16.             </User>
  17.         </XboxAPI>
  18. <?php } ?>

en cuanto a lo otro estoy leyendo como instalar pear, no te comprendi bien que hacer pero estoy leyendo sobre pear rapidito jejeje
  #14 (permalink)  
Antiguo 08/10/2011, 17:37
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: problema con api y xml no logro lo que busco

Cita:
Iniciado por andresdzphp Ver Mensaje
Si ya tienes ese JSON puedes convertirlo a XML usando por ejemplo XML_Serializer de PEAR y ya leerlo como XML ya sea en la misma URL o como quieras. Descargate PEAR + XML/Util.php + XML_Serializer y con este código ya tendrías un XML:

Código PHP:
Ver original
  1. <?php
  2. require('xbox.php');
  3. require("Serializer.php");
  4.  
  5. header("Content-type: text/xml");
  6.  
  7. function json_to_xml($json) {
  8.     $serializer = new XML_Serializer();
  9.     $obj = json_decode($json);
  10.     if ($serializer->serialize($obj)) {
  11.         return $serializer->getSerializedData();
  12.     }
  13.     else {
  14.         return null;
  15.     }
  16. }
  17.  
  18. $xbox = new XboxGamercard();
  19. $xbox->setGamertag('malatos');
  20. $xbox->setRegion('en-GB');
  21. $data = $xbox->fetchData();
  22. $res = json_encode($data);
  23.  
  24. echo json_to_xml($res);

Si no te gusta PEAR en google hay alternativas para convertir ese objeto en XML.

PD: muestra el código que te está dando error.

Saludos.
Hola Andres

Creo que eso no funcionaría porque su método "fetchData()", si no miré mal(ahora no puedo comprobarlo), no devuelve ningún objeto json o no al menos como el quiere. ¿Me equivoco?

kabbitiu te da error porque me equivoqué, pon esto en la línea que da error:
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';

tal vez me haya dejado más errores sintácticos. Corrígelos.
  #15 (permalink)  
Antiguo 08/10/2011, 17:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: problema con api y xml no logro lo que busco

Cita:
Iniciado por kiko's Ver Mensaje
Hola Andres

Creo que eso no funcionaría porque su método "fetchData()", si no miré mal(ahora no puedo comprobarlo), no devuelve ningún objeto json o no al menos como el quiere. ¿Me equivoco?

kabbitiu te da error porque me equivoqué, pon esto en la línea que da error:
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';

tal vez me haya dejado más errores sintácticos. Corrígelos.
Si funciona porque yo mismo lo hice y lo que devuelve el método fetchData es un objeto stdClass y para que llenar un XML de esa forma teniendo clases como DOMDocument?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #16 (permalink)  
Antiguo 08/10/2011, 17:51
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: problema con api y xml no logro lo que busco

Cita:
Iniciado por andresdzphp Ver Mensaje
Si funciona porque yo mismo lo hice y lo que devuelve el método fetchData es un objeto stdClass y para que llenar un XML de esa forma teniendo clases como DOMDocument?
Sí, sí, ahora mismo estaba revisando la clase y tienes razón :D Pensaba que los atributos no estaban guardados de manera jerárquica, pero si lo están.

Saludos.
  #17 (permalink)  
Antiguo 08/10/2011, 17:55
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: problema con api y xml no logro lo que busco

este ok les agradezco mucho mucho la ayuda que hasta ahora me han dado, pero no me gustaria causar ningun conflicto entre nosotros como miembros del foro, la verdad que busco la forma menos dificil para todos los que se han involucrado en este tema para no causarles ni incomodidad ni molestia, por favor sigamos sin conflicto si?, por otro lado yo uso solo un gestor php y estoy pagando un servicio de hosting que es donde pruebo directamente los archivos no se si tenga que hacer algo para poder generer los archivos con pear como me comentaste, y por otro lado kiko mira me da error aqui en la linea 9 mira es esta:

Código PHP:
Ver original
  1. <?php if ( $_GET['format'] == 'xml' ) { ?>

y de nuevo mil gracias a los dos por su ayuda ojala puedan guiarme para poder terminar este problemilla rapido jejeje
  #18 (permalink)  
Antiguo 08/10/2011, 18:16
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: problema con api y xml no logro lo que busco

No hay problema, mira puedes usar también este ejemplo del manual

http://www.php.net/manual/en/book.simplexml.php#105998

me funcionó también.

Código PHP:
Ver original
  1. <?php
  2. class Obj2xml
  3. {
  4.     public $xmlResult;
  5.    
  6.     function __construct($rootNode) {
  7.         $this->xmlResult = new SimpleXMLElement("<$rootNode></$rootNode>");
  8.     }
  9.    
  10.     private function iteratechildren($object, $xml) {
  11.         foreach ($object as $name => $value) {
  12.             if (is_string($value) || is_numeric($value)) {
  13.                 $xml->$name = $value;
  14.             } else {
  15.                 $xml->$name = null;
  16.                 $this->iteratechildren($value, $xml->$name);
  17.             }
  18.         }
  19.     }
  20.    
  21.     function toXml($object) {
  22.         $this->iteratechildren($object, $this->xmlResult);
  23.         return $this->xmlResult->asXML();
  24.     }
  25. }
  26.  
  27. require ('xbox.php');
  28. $xbox = new XboxGamercard();
  29. $xbox->setGamertag('malatos');
  30. $xbox->setRegion('en-GB');
  31. $data = $xbox->fetchData();
  32.  
  33. $converter = new Obj2xml("API");
  34.  
  35. header("Content-Type:text/xml");
  36.  
  37. echo $converter->toXml($data);
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 08/10/2011 a las 18:23
  #19 (permalink)  
Antiguo 08/10/2011, 19:01
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: problema con api y xml no logro lo que busco

pfff , wow de verdad gracias esta tal cual lo buscaba!!!!!
una preguntita para poder cambiar el gamertag desde la url que se necesitaria???, y de verdad que me has dejado hasta sin palabras un simple gracias ya no basta en verdad
  #20 (permalink)  
Antiguo 08/10/2011, 19:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: problema con api y xml no logro lo que busco

Bueno necesitas usar $_GET y ya no necesitarías más. Como dato adicional te agregue para que detecte si es valido o no el usuario...


Código PHP:
Ver original
  1. class Obj2xml
  2. {
  3.     public $xmlResult;
  4.    
  5.     function __construct($rootNode) {
  6.         $this->xmlResult = new SimpleXMLElement("<$rootNode></$rootNode>");
  7.     }
  8.    
  9.     private function iteratechildren($object, $xml) {
  10.         foreach ($object as $name => $value) {
  11.             if (is_string($value) || is_numeric($value)) {
  12.                 $xml->$name = $value;
  13.             } else {
  14.                 $xml->$name = null;
  15.                 $this->iteratechildren($value, $xml->$name);
  16.             }
  17.         }
  18.     }
  19.    
  20.     function toXml($object) {
  21.         $this->iteratechildren($object, $this->xmlResult);
  22.         return $this->xmlResult->asXML();
  23.     }
  24. }
  25.  
  26. require ('xbox.php');
  27.  
  28. if (!empty($_GET['usuario'])) {
  29.    
  30.     $usuario = $_GET['usuario'];
  31.    
  32.     $xbox = new XboxGamercard();
  33.     $xbox->setGamertag($usuario);
  34.     $xbox->setRegion('en-GB');
  35.     $data = @$xbox->fetchData();
  36.    
  37.     if ($data->is_valid != 0) {
  38.         $converter = new Obj2xml("API");
  39.         header("Content-Type:text/xml");
  40.         echo $converter->toXml($data);
  41.     } else {
  42.         echo 'Usuario no es valido';
  43.     }
  44. }

tu URL seria http://ejemplo.com?usuario=malatos
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #21 (permalink)  
Antiguo 08/10/2011, 19:25
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: problema con api y xml no logro lo que busco

wow eres un monstruo en verdad!!!!!!, todo lo que parecia tan dificil lo volviste mega facil en verdad mil gracias ya no se ni que mas decirte en verdad gracias un millon!!!!!!!, en lo que pueda ayudarte no dudes en pedirmelo en verdad...

Etiquetas: api, objectoxml, pear, xml, xml_serializer, variables
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:31.