Foros del Web » Programando para Internet » PHP »

Como sacar informacion de un XML que esta en otra URL

Estas en el tema de Como sacar informacion de un XML que esta en otra URL en el foro de PHP en Foros del Web. Hola a todos los del foro Tengo este codigo XML en un archivo php en otro site llamado: http://proveedor.com/XMLScores.php Cita: <scores> <game time="Nov 7 2013 ...
  #1 (permalink)  
Antiguo 07/11/2013, 18:16
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Como sacar informacion de un XML que esta en otra URL

Hola a todos los del foro

Tengo este codigo XML en un archivo php en otro site llamado: http://proveedor.com/XMLScores.php
Cita:
<scores>
<game time="Nov 7 2013 05:30:00:000PM">
<sport id="1" name=""/>
<league id="1" name=""/>
<away number="107" name="Washington" abbr="WAS" score="" points="-1" price="-106" ML="-111" opener_points="-1" opener_price="-120" opener_ML="-132"/>
<home number="108" name="Minnesota" abbr="MIN" score="" points="1" price="-104" ML="101" opener_points="1" opener_price="109" opener_ML="120"/>
<status time_remaining="" value=""/>
<total points="48.5" over="-102" under="-108" opener_total="48" opener_over="-105" opener_under="-105"/>
</game>
<game time="Nov 7 2013 04:30:00:000PM">
<sport id="1" name=""/>
<league id="2" name=""/>
<away number="109" name="Oklahoma" abbr="OKL" score="" points="17" price="-112" ML="526" opener_points="14" opener_price="-106" opener_ML="481"/>
<home number="110" name="Baylor" abbr="BAY" score="" points="-17" price="100" ML="-665" opener_points="-14" opener_price="-106" opener_ML="-600"/>
<status time_remaining="" value=""/>
<total points="74" over="-108" under="-104" opener_total="72.5" opener_over="-106" opener_under="-106"/>
</game>
</scores>
Y tengo este codigo PHP donde quiero consumir o sacar cada nodo game con la informacion que deseo:
Código PHP:
$ruta="http://proveedor.com/XMLScores.php";
$dom= new DOMDocument;
$dom->preserveWhiteSpace=FALSE;
$dom->load($ruta);
$nodos=$dom->getElementsByTagName("<game>"); //aqui se supone que deberia de buscar las etiquetas que quiero mostrar.
foreach($nodos as $nodo){
echo 
$nodo->nodeValue;

Pero no me esta imprimiendo nada, y deseo hacer una tabla con la informacion de cada juego que se muestra en el xml. Alguna ayuda por favor ?
  #2 (permalink)  
Antiguo 07/11/2013, 18:49
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Como sacar informacion de un XML que esta en otra URL

Código PHP:
Ver original
  1. $nodos=$dom->getElementsByTagName('game');//aqui va el nombre de.la etiqueta, no la.etiqueta
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #3 (permalink)  
Antiguo 07/11/2013, 18:59
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Respuesta: Como sacar informacion de un XML que esta en otra URL

Ya lo hice y no me imprime nada
  #4 (permalink)  
Antiguo 07/11/2013, 21:14
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Como sacar informacion de un XML que esta en otra URL

Claro que no mueatra nada ya que no hay ningun valor entre laz etiquetas, el valir esta en los atributos, mira esto http://www.php.net/manual/es/domdocu...name.php#46121
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #5 (permalink)  
Antiguo 08/11/2013, 11:01
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: Como sacar informacion de un XML que esta en otra URL

Puedes hacer algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $source = '<scores>
  4. <game time="Nov 7 2013 05:30:00:000PM">
  5. <sport id="1" name=""/>
  6. <league id="1" name=""/>
  7. <away number="107" name="Washington" abbr="WAS" score="" points="-1" price="-106" ML="-111" opener_points="-1" opener_price="-120" opener_ML="-132"/>
  8. <home number="108" name="Minnesota" abbr="MIN" score="" points="1" price="-104" ML="101" opener_points="1" opener_price="109" opener_ML="120"/>
  9. <status time_remaining="" value=""/>
  10. <total points="48.5" over="-102" under="-108" opener_total="48" opener_over="-105" opener_under="-105"/>
  11. </game>
  12. <game time="Nov 7 2013 04:30:00:000PM">
  13. <sport id="1" name=""/>
  14. <league id="2" name=""/>
  15. <away number="109" name="Oklahoma" abbr="OKL" score="" points="17" price="-112" ML="526" opener_points="14" opener_price="-106" opener_ML="481"/>
  16. <home number="110" name="Baylor" abbr="BAY" score="" points="-17" price="100" ML="-665" opener_points="-14" opener_price="-106" opener_ML="-600"/>
  17. <status time_remaining="" value=""/>
  18. <total points="74" over="-108" under="-104" opener_total="72.5" opener_over="-106" opener_under="-106"/>
  19. </game>
  20. </scores>';

Código PHP:
Ver original
  1. $doc = new DOMDocument();
  2. $doc->preserveWhiteSpace = false;
  3. $doc->loadXML($source);
  4. $games = $doc->getElementsByTagName('game');
  5.  
  6. foreach ($games as $game) {
  7.     foreach ($game->childNodes as $child) {
  8.         echo "<h3>$child->nodeName</h3>";
  9.         if ($child->hasAttributes()) {
  10.             foreach ($child->attributes as $attr) {
  11.                 echo "<p>Atributo: $attr->nodeName // Valor: $attr->nodeValue</p>";
  12.             }
  13.         }
  14.     }
  15.     echo '<hr />';
  16. }

Ya sólo tendrías que armar la tabla.

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
  #6 (permalink)  
Antiguo 10/11/2013, 16:10
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Sacar datos de un xlm en otro server?

Saludos,

Tengo este codigo que me lee bien el codigo xml que tengo en otro server. Para explicar mejor en un server llamado www.proveedor.com/scores.php tengo este codigo xml:
Código HTML:
<scores>
<game time="Nov 10 2013 10:00:00:000AM">
<sport id="1" name=""/>
<league id="1" name=""/>
<away number="203" name="Jacksonville" abbr="JAC" score="29" points="11.5" price="-117" ML="439" opener_points="13" opener_price="-105" opener_ML="534"/>
<home number="204" name="Tennessee" abbr="TEN" score="27" points="-11.5" price="106" ML="-520" opener_points="-13" opener_price="-105" opener_ML="-650"/>
<status time_remaining=" " value="Final"/>
<total points="41.5" over="-105" under="-105" opener_total="41" opener_over="-105" opener_under="-105"/>
<period number="1" away_score="10" home_score="0"/>
<period number="2" away_score="3" home_score="7"/>
<period number="3" away_score="7" home_score="3"/>
<period number="4" away_score="9" home_score="17"/>
</game>
<game time="Nov 10 2013 10:00:00:000AM">
<sport id="1" name=""/>
<league id="1" name=""/>
<away number="205" name="Philadelphia" abbr="PHI" score="27" points="-1" price="-107" ML="-113" opener_points="1" opener_price="117" opener_ML="105"/>
<home number="206" name="Green Bay" abbr="GB" score="13" points="1" price="-103" ML="102" opener_points="-1" opener_price="-129" opener_ML="-116"/>
<status time_remaining=" " value="Final"/>
<total points="47" over="-107" under="-103" opener_total="48" opener_over="-105" opener_under="-105"/>
<period number="1" away_score="7" home_score="0"/>
<period number="2" away_score="3" home_score="3"/>
<period number="3" away_score="17" home_score="7"/>
<period number="4" away_score="0" home_score="3"/>
</game>
</scores> 
Este codigo que tengo acá me sirve a la perfeccion:
Código PHP:
require_once('config.php');

 
$DOM = new DOMDocument('1.0''utf-8');
 
$DOM->preserveWhiteSpace false;
 
$DOM->loadXML(file_get_contents('www.proveedor.com/scores.php'));
 
$games $DOM->getElementsByTagName('game');
 
 foreach (
$games as $game) {
    foreach (
$game->childNodes as $child) {
        echo 
"<h3>".$child->nodeName."</h3>";
        if (
$child->hasAttributes()) {
            foreach (
$child->attributes as $attr) {
                echo 
"<p>Atributo:".$attr->nodeName." Valor: ".$attr->nodeValue."</p>";
            }
        }
    }
    echo 
'<hr />';
 } 
El problema que tengo es que no se que agregar a mi codigo para que pueda leer el campo time ubicado en cada nodo game en el codigo XML, alguna ayuda por favor ?
  #7 (permalink)  
Antiguo 10/11/2013, 16: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: Sacar datos de un xlm en otro server?

Dentro del foreach de los games:

Código PHP:
Ver original
  1. echo $game->getAttribute('time');
__________________
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
  #8 (permalink)  
Antiguo 11/11/2013, 19:22
Avatar de adryan310  
Fecha de Ingreso: septiembre-2012
Mensajes: 450
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Como tomar informacion de un xml ?

Hola a todos,

Tengo el siguiente xml:
Cita:
<scores>
<game time="Nov 11 2013 05:40:00:000PM">
<sport id="1" name=""/>
<league id="1" name=""/>
<away number="227" name="Miami" abbr="MIA" score="" points="-1" price="-123" ML="-130" opener_points="-3.5" opener_price="111" opener_ML="-123"/>
<home number="228" name="Tampa Bay" abbr="TB" score="" points="1" price="111" ML="118" opener_points="3.5" opener_price="-123" opener_ML="111"/>
<status time_remaining="" value=""/>
<total points="39.5" over="-101" under="-109" opener_total="40.5" opener_over="-105" opener_under="-105"/>
</game>
<game time="Nov 11 2013 04:05:00:000PM">
<sport id="2" name=""/>
<league id="3" name=""/>
<away number="701" name="Atlanta" abbr="ATL" score="46" points="-2" price="-103" ML="-120" opener_points="-2.5" opener_price="-105" opener_ML="-145"/>
<home number="702" name="Charlotte" abbr="CHA" score="54" points="2" price="-107" ML="109" opener_points="2.5" opener_price="-105" opener_ML="131"/>
<status time_remaining="Half" value="Time"/>
<total points="197" over="-105" under="-105" opener_total="194.5" opener_over="-110" opener_under="100"/>
<period number="1" away_score="26" home_score="29"/>
<period number="2" away_score="20" home_score="25"/>
</game>
<game time="Nov 11 2013 04:05:00:000PM">
<sport id="2" name=""/>
<league id="3" name=""/>
<away number="703" name="Memphis" abbr="MEM" score="39" points="6.5" price="-108" ML="227" opener_points="7" opener_price="-110" opener_ML="244"/>
<home number="704" name="Indiana" abbr="IND" score="46" points="-6.5" price="-102" ML="-255" opener_points="-7" opener_price="100" opener_ML="-275"/>
<status time_remaining="Half" value="Time"/>
<total points="182" over="-105" under="-105" opener_total="184.5" opener_over="-105" opener_under="-105"/>
<period number="1" away_score="16" home_score="23"/>
<period number="2" away_score="23" home_score="23"/>
</game>
</scores>
Deseo crear una tabla para cada dato de cada game con su correspondiente hora y los datos que estan contenidos en la etiqueta <game> pero en este caso serian 3 tablas ya que la etiqueta <game> se repite 3 veces, pero a veces solo sale 2 veces entonces debe de ser dinamico, como puedo hacer eso con PHP ?
  #9 (permalink)  
Antiguo 11/11/2013, 19:50
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Como tomar informacion de un xml ?

Otra vez con lo mismo,
Cita:
Iniciado por andresdzphp Ver Mensaje
Puedes hacer algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $source = '<scores>
  4. <game time="Nov 7 2013 05:30:00:000PM">
  5. <sport id="1" name=""/>
  6. <league id="1" name=""/>
  7. <away number="107" name="Washington" abbr="WAS" score="" points="-1" price="-106" ML="-111" opener_points="-1" opener_price="-120" opener_ML="-132"/>
  8. <home number="108" name="Minnesota" abbr="MIN" score="" points="1" price="-104" ML="101" opener_points="1" opener_price="109" opener_ML="120"/>
  9. <status time_remaining="" value=""/>
  10. <total points="48.5" over="-102" under="-108" opener_total="48" opener_over="-105" opener_under="-105"/>
  11. </game>
  12. <game time="Nov 7 2013 04:30:00:000PM">
  13. <sport id="1" name=""/>
  14. <league id="2" name=""/>
  15. <away number="109" name="Oklahoma" abbr="OKL" score="" points="17" price="-112" ML="526" opener_points="14" opener_price="-106" opener_ML="481"/>
  16. <home number="110" name="Baylor" abbr="BAY" score="" points="-17" price="100" ML="-665" opener_points="-14" opener_price="-106" opener_ML="-600"/>
  17. <status time_remaining="" value=""/>
  18. <total points="74" over="-108" under="-104" opener_total="72.5" opener_over="-106" opener_under="-106"/>
  19. </game>
  20. </scores>';

Código PHP:
Ver original
  1. $doc = new DOMDocument();
  2. $doc->preserveWhiteSpace = false;
  3. $doc->loadXML($source);
  4. $games = $doc->getElementsByTagName('game');
  5.  
  6. foreach ($games as $game) {
  7.     foreach ($game->childNodes as $child) {
  8.         echo "<h3>$child->nodeName</h3>";
  9.         if ($child->hasAttributes()) {
  10.             foreach ($child->attributes as $attr) {
  11.                 echo "<p>Atributo: $attr->nodeName // Valor: $attr->nodeValue</p>";
  12.             }
  13.         }
  14.     }
  15.     echo '<hr />';
  16. }

Ya sólo tendrías que armar la tabla.

Saludos.
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Etiquetas: informacion, tabla, tomar, 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 12:41.