Foros del Web » Programando para Internet » PHP »

Tratar archivo XML con PHP

Estas en el tema de Tratar archivo XML con PHP en el foro de PHP en Foros del Web. Muy buenas, Antes que nada, explicar que mis conocimientos de PHP son extremadamente básicos, se reducen a tratar con Bases de Datos MySQL, y 4 ...
  #1 (permalink)  
Antiguo 12/06/2008, 16:47
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Tratar archivo XML con PHP

Muy buenas,

Antes que nada, explicar que mis conocimientos de PHP son extremadamente básicos, se reducen a tratar con Bases de Datos MySQL, y 4 cosas más...
Aclaro ésto, porque me temo que este mismo problema se ha tratado alguna vez por este foro, y las respuestas siempre te llevan a http://www.php.net. Esa solución, dados mis conocimientos, no me sirve...

Llevo algunos días con ésto, he dado mil vueltas por Google, por la citada página de php.net... pero no saco nada en claro. Creo que la única manera de entenderlo es a base de ejemplos prácticos

Sin más, explico el "problema"...
Tengo un fichero XML, del cual necesito imprimir por pantalla una serie de datos (luego vendrían más historias con esos datos, pero de éso ya me encargo yo xD) Esto tengo que hacerlo en PHP, y como digo, no he sido capaz hasta ahora...

A ver si algún alma caritativa me echa un cable...
Imaginemos este fichero XML

Código:
<punter-odds id="123">
−
<game id="2637684" date="20080613" time="0105">
−
<description>
<category id="BSBMENUSAUSAFST" order="40000">MLB</category>
Cleveland Indians - Minnesota Twins: Listed pitchers A. Laffey - L. Hernandez
</description>
<type id="0"/>
−
<alternatives>
<alternative odds="1.52" team="26421">1</alternative>
<alternative odds="0.00" team="26421">X</alternative>
<alternative odds="2.59" team="26424">2</alternative>
</alternatives>
</game>
−
<game id="2638131" date="20080613" time="0105">
−
<description>
<category id="BSBMENUSAUSAFST" order="40000">MLB</category>
Cleveland Indians - Minnesota Twins: Listed pitchers A. Laffey - L. Hernandez: Twins Team Total
</description>
<type id="114"/>
−
<alternatives>
<alternative odds="1.85" team="-1">under 4</alternative>
<alternative odds="1.90" team="-1">over 4</alternative>
</alternatives>
</game>
−
<game id="2638215" date="20080613" time="0105">
−
<description>
<category id="BSBMENUSAUSAFST" order="40000">MLB</category>
Cleveland Indians - Minnesota Twins: Listed pitchers A. Laffey - L. Hernandez: over/under
</description>
<type id="40"/>
−
<alternatives>
<alternative odds="1.83" team="-1">under 9.5 runs</alternative>
<alternative odds="2.00" team="-1">over 9.5 runs</alternative>
</alternatives>
</game>
He aquí la petición...
¿Qué código necesitaría en PHP para conectarme al archivo (llamémosle "URL"), e imprimir por pantalla tan sólo los "Games" con, por ejemplo, "type id=40" con todos los datos contenidos en <description> & <alternatives> ?

Pienso que con este código podría llegar a entender cómo sacar cualquier otra combinación... Me harían un gran favor si alguien me lo facilita

NOTA Aclarar que en mi servidor la versión PHP es 4.4.1
  #2 (permalink)  
Antiguo 12/06/2008, 16:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Tratar archivo XML con PHP

primero... necesitas alguna extensión de XML habilitada, deveras....


usa esto, para averiguar si las tienes o no....

Código PHP:
$x=get_loaded_extensions();
print_r($x); 
con la extension de XML habilitada, es mas facil tratar estos datos...

Referencia: http://php.net/xml


-----------


la otra es a base de puras expresiones regulares, también... del manual de PHP

http://www.php.net/pcre


-------------------

la ultima, si no crees que PHP puede.... :D, claro que puede!!!

existe una clase llamada HTML2SQL o algo así.. que sirve para extraer porciones de HTML a base de sintaxis SQL, inclusive XML.... usa expresiones regulares!!


PDTA: mi opinión, usa alguna extensión de XML

PDTA2: todo te lleva a http://php.net (es la pagina oficial) así que no veo porque no te habrian de llevar ahí.... ya que ahí tienes bastante info., suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/06/2008, 17:52
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
primero... necesitas alguna extensión de XML habilitada, deveras....


usa esto, para averiguar si las tienes o no....

Código PHP:
$x=get_loaded_extensions();
print_r($x); 
con la extension de XML habilitada, es mas facil tratar estos datos...
La extensión XML sí que la tengo habilitada...

Array ( [0] => standard [1] => bcmath [2] => calendar [3] => ctype [4] => com [5] => ftp [6] => mysql [7] => odbc [8] => overload [9] => pcre [10] => session [11] => tokenizer [12] => xml [13] => wddx [14] => zlib )


Respecto a php.net...
El problema es que no entiendo lo que me dicen allá, me pierdo (ya digo que de PHP lo justito ), no sé muy bien dónde buscar para lo que quiero hacer (lo que pedía en el 1º post, vaya)
  #4 (permalink)  
Antiguo 12/06/2008, 18:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Tratar archivo XML con PHP

en la referencia de PHP

http://php.net/xml

están todas las funciones relacionadas con esto, también hay ejemplos...

la verdad yo nunca he usado esta extensión, así que solo cumplí una función... orientarte, lo demás te toca a ti... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 12/06/2008, 18:07
 
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Tratar archivo XML con PHP

Para el tratamiento de documentos xml con php tienes basicamente 3 alternativas:
- DOM XML
Para crear desde cero un docto xml o ampliarlo (es orientada a objetos).
- SimpleXML
Para convertir doctos xml en variables php, leer xml y mostrarlo por pantalla.
- SAX XML
Es la más sencilla y ligera, trata como un flujo directo de datos.

Estas vienen en forma nativa a partir de php5 (igual ver configuración en php.ini), excepto SAX XML que ya estaba disponible a partir de php4

No es la solución concreta a tu problema, pero es un comienzo. Igual veré si tengo algún codigillo por ahi.
  #6 (permalink)  
Antiguo 12/06/2008, 19:19
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
en la referencia de PHP

http://php.net/xml

están todas las funciones relacionadas con esto, también hay ejemplos...
He estado haciendo algunas cosas

De php.net he copiado esto

Código PHP:
$file "URL"// Llamaremos URL al archivo XML

function trustedFile($file
{
    
// only trust local files owned by ourselves
    
if (!eregi("^([a-z]+)://"$file
        && 
fileowner($file) == getmyuid()) {
            return 
true;
    }
    return 
false;
}

function 
startElement($parser$name$attribs
{
    echo 
"&lt;<font color=\"#0000cc\">$name</font>";
    if (
count($attribs)) {
        foreach (
$attribs as $k => $v) {
            echo 
" <font color=\"#009900\">$k</font>=\"<font 
                   color=\"#990000\">$v</font>\""
;
        }
    }
    echo 
"&gt;";
}

function 
endElement($parser$name
{
    echo 
"&lt;/<font color=\"#0000cc\">$name</font>&gt;";
}

function 
characterData($parser$data
{
    echo 
"<b>$data</b>";
}

function 
PIHandler($parser$target$data
{
    switch (
strtolower($target)) {
        case 
"php":
            global 
$parser_file;
            
// If the parsed document is "trusted", we say it is safe
            // to execute PHP code inside it.  If not, display the code
            // instead.
            
if (trustedFile($parser_file[$parser])) {
                eval(
$data);
            } else {
                
printf("Untrusted PHP code: <i>%s</i>"
                        
htmlspecialchars($data));
            }
            break;
    }
}

function 
defaultHandler($parser$data
{
    if (
substr($data01) == "&" && substr($data, -11) == ";") {
        
printf('<font color="#aa00aa">%s</font>'
                
htmlspecialchars($data));
    } else {
        
printf('<font size="-1">%s</font>'
                
htmlspecialchars($data));
    }
}

function 
externalEntityRefHandler($parser$openEntityNames$base$systemId,
                                  
$publicId) {
    if (
$systemId) {
        if (!list(
$parser$fp) = new_xml_parser($systemId)) {
            
printf("Could not open entity %s at %s\n"$openEntityNames,
                   
$systemId);
            return 
false;
        }
        while (
$data fread($fp4096)) {
            if (!
xml_parse($parser$datafeof($fp))) {
                
printf("XML error: %s at line %d while parsing entity %s\n",
                       
xml_error_string(xml_get_error_code($parser)),
                       
xml_get_current_line_number($parser), $openEntityNames);
                
xml_parser_free($parser);
                return 
false;
            }
        }
        
xml_parser_free($parser);
        return 
true;
    }
    return 
false;
}

function 
new_xml_parser($file
{
    global 
$parser_file;

    
$xml_parser xml_parser_create();
    
xml_parser_set_option($xml_parserXML_OPTION_CASE_FOLDING1);
    
xml_set_element_handler($xml_parser"startElement""endElement");
    
xml_set_character_data_handler($xml_parser"characterData");
    
xml_set_processing_instruction_handler($xml_parser"PIHandler");
    
xml_set_default_handler($xml_parser"defaultHandler");
    
xml_set_external_entity_ref_handler($xml_parser"externalEntityRefHandler");
    
    if (!(
$fp = @fopen($file"r"))) {
        return 
false;
    }
    if (!
is_array($parser_file)) {
        
settype($parser_file"array");
    }
    
$parser_file[$xml_parser] = $file;
    return array(
$xml_parser$fp);
}

if (!(list(
$xml_parser$fp) = new_xml_parser($file))) {
    die(
"could not open XML input");
}

echo 
"<pre>";
while (
$data fread($fp4096)) {
    if (!
xml_parse($xml_parser$datafeof($fp))) {
        die(
sprintf("XML error: %s at line %d\n",
                    
xml_error_string(xml_get_error_code($xml_parser)),
                    
xml_get_current_line_number($xml_parser)));
    }
}
echo 
"</pre>";
echo 
"\n";
xml_parser_free($xml_parser); 

En este link de prueba
http://www.falotron.com/modules.php?name=recoger_datos2
Tenemos un filtro bastante exhaustivo de todo el archivo XML, para simplificar la cosa un poco

Lo que me falta es la manera de imprimirlo en pantalla
Digamos que lo único que necesito de toda esa información sería...

<GAME> Necesito el valor de los atributos DATE & TIME
<DESCRIPTION> Me basta el contenido, $data (tambien el de <CATEGORY>)
<ALTERNATIVES> Necesito el valor del atributo ODDS, y el contenido, $data

¿Alguna pista sobre cómo retocar el código para mostrar tan sólo la información que necesito para cada "GAME"?
  #7 (permalink)  
Antiguo 12/06/2008, 21:18
 
Fecha de Ingreso: diciembre-2007
Mensajes: 110
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Tratar archivo XML con PHP

Pedazo de codigo solo para mostrar 3 campos!!!!!

yo ando buscando lo mismo, respondo para suscribirme al tema.

Si encuentras la API ARCHI EASY ULTRA SIMPLE XML, avisa!


Saludos!!!
  #8 (permalink)  
Antiguo 13/06/2008, 05:28
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por GsutavoDeLanus Ver Mensaje
Pedazo de codigo solo para mostrar 3 campos!!!!!

yo ando buscando lo mismo, respondo para suscribirme al tema.

Si encuentras la API ARCHI EASY ULTRA SIMPLE XML, avisa!


Saludos!!!
La verdad es que he estado leyendo sobre SIMPLEXML, y me parece extremadamente sencilla de usar...

Voy a intentar que mi host me instale PHP5, a ver si hay suerte...
  #9 (permalink)  
Antiguo 13/06/2008, 20:20
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por falotron Ver Mensaje
La verdad es que he estado leyendo sobre SIMPLEXML, y me parece extremadamente sencilla de usar...

Voy a intentar que mi host me instale PHP5, a ver si hay suerte...
Parece que aquí está la solución para usar SimpleXML con PHP4
http://www.syntaxerror.es/2008/02/11/simplexml-para-php4

Todavía estoy probándolo, pero ésto empieza a acercarse mucho a lo que necesitaba... vamos bien
  #10 (permalink)  
Antiguo 14/06/2008, 06:52
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por falotron Ver Mensaje
Parece que aquí está la solución para usar SimpleXML con PHP4
http://www.syntaxerror.es/2008/02/11/simplexml-para-php4

Todavía estoy probándolo, pero ésto empieza a acercarse mucho a lo que necesitaba... vamos bien
Se me ha presentado un problema...
El documento XML que necesito leer/tratar tiene el siguiente tag como "root" <punter-odds>

Ese guión (-) hace que los comandos tipo $xml->tag->tag den error "Fatal error: Call to a member function on a non-object"

La pregunta es...
¿Hay manera de escribir ese tag para evitar ese error?
O ¿Se podría modificar el nombre del tag mediante algún otro comando (siempre desde PHP4)?
  #11 (permalink)  
Antiguo 17/06/2008, 04:30
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por falotron Ver Mensaje
Se me ha presentado un problema...
El documento XML que necesito leer/tratar tiene el siguiente tag como "root" <punter-odds>

Ese guión (-) hace que los comandos tipo $xml->tag->tag den error "Fatal error: Call to a member function on a non-object"

La pregunta es...
¿Hay manera de escribir ese tag para evitar ese error?
O ¿Se podría modificar el nombre del tag mediante algún otro comando (siempre desde PHP4)?
¿Nadie me echa un cable con ésto?
Es lo único que me falta para terminar la parte de recogida de datos...
  #12 (permalink)  
Antiguo 17/06/2008, 05:09
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por falotron Ver Mensaje
¿Nadie me echa un cable con ésto?
Es lo único que me falta para terminar la parte de recogida de datos...
Me respondo yo mismo... ya lo encontré
La manera de escribirlo era
Código:
{'punter-odds'}
  #13 (permalink)  
Antiguo 17/06/2008, 05:22
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Y ya puestos... por si alguien se viera en la misma situación (tener PHP4 instalado en el server, y querer leer/tratar un archivo XML con SimpleXML) posteo el código con sus explicaciones, a modo de HOWTO, ya que creo que habrá pocos ficheros XML más "complejos" de leer que éste, con su estructura...

Lo 1º es instalar esta portabilidad de SimpleXML para PHP4
http://www.syntaxerror.es/2008/02/11/simplexml-para-php4

En ese link hay un tutorial cojonudo

archivo.xml
Código:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<punter-odds>
	<game id="2646200" date="20080616" time="2045">
		−
		<description>
			<category id="SOCMENEUREURMCS" order="300">Euro 2008 - Matches</category>
			Poland - Croatia
		</description>
		<type id="0"/>
		−
		<alternatives>
			<alternative odds="2.40" team="26491">1</alternative>
			<alternative odds="3.55" team="26491">X</alternative>
			<alternative odds="2.85" team="51148">2</alternative>
		</alternatives>
	</game>
	−
	<game id="2646214" date="20080616" time="2045">
		−
		<description>
			<category id="SOCMENEUREURMCS" order="300">Euro 2008 - Matches</category>
			Austria - Germany
		</description>
		<type id="0"/>
		−
		<alternatives>
			<alternative odds="9.00" team="5211">1</alternative>
			<alternative odds="4.80" team="5211">X</alternative>
			<alternative odds="1.37" team="51189">2</alternative>
		</alternatives>
	</game>
	−
</punter-odds>
Código PHP
(ignoro la parte del tratamiento de los datos, éso ya a gusto del consumidor xD)
Código PHP:
require_once 'IsterXmlSimpleXMLImpl.php';

//Creamos el objeto principal
$xml_object = new IsterXmlSimpleXMLImpl;

$doc $xml_object->load_file('archivo.xml');


//Recorremos cada 'game'

foreach($doc->{'punter-odds'}->game as $game)
{

    
//Atributos de cada 'game'
    
$atributos $game->attributes();
    
//Recogemos el ID
    
$id $atributos['id'];

    
//Por ejemplo, para imprimir 'date' o 'time' sería...
    //print ''.$atributos['date'].' ';
    //print ''.$atributos['time'].'';

    //Para obtener LIGA (category) + EVENTO (description), usamos CDATA...
    
$liga $game->description->category->CDATA();
    
$evento $game->description->CDATA();

    
//CUOTAS (odds)
    
foreach($game->alternatives->alternative as $cuotas)
{
    
$at_cuotas $cuotas->attributes();
    
// para mostrar el valor de 'odds' sería $at_cuotas['odds']
    // seleccion es la apuesta elegida (por ejemplo: 1, X o 2)
    
$seleccion $cuotas->CDATA();
}


Espero haber ayudado a alguien con ésto
  #14 (permalink)  
Antiguo 21/06/2008, 18:27
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Vuelvo a la carga con este tema, ya que andaba terminando de pulir cosas, y hay un tema en el que dudo...

El caso es que en las páginas de recogida de datos XML quiero que si el fichero XML no existe (bien porque no pueda conectarme, o lo que sea) se muestre cierto texto, y si está OK entonces que tire para delante el código que tengo

He probado así...

Código PHP:
// Las 2 primeras líneas son necesarias para la portabilidad de SimpleXML para PHP4
// No tienen demasiado que ver con el problema, o éso creo, pero bueno...
require_once 'IsterXmlSimpleXMLImpl.php';
$xml_object = new IsterXmlSimpleXMLImpl;

$file 'URL_del_fichero_XML';
if (
file_exists($file)){ 

// código si existe el fichero

} else {

// código si no se han podido recoger datos


No sé muy bien por qué, pero no funciona... siempre hace como si el fichero XML no existiera... de lo cual deduzco que el file_exists está mal empleado ahí...
¿Dónde está el fallo?
  #15 (permalink)  
Antiguo 27/06/2008, 21:55
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por falotron Ver Mensaje
Vuelvo a la carga con este tema, ya que andaba terminando de pulir cosas, y hay un tema en el que dudo...

El caso es que en las páginas de recogida de datos XML quiero que si el fichero XML no existe (bien porque no pueda conectarme, o lo que sea) se muestre cierto texto, y si está OK entonces que tire para delante el código que tengo

He probado así...

Código PHP:
// Las 2 primeras líneas son necesarias para la portabilidad de SimpleXML para PHP4
// No tienen demasiado que ver con el problema, o éso creo, pero bueno...
require_once 'IsterXmlSimpleXMLImpl.php';
$xml_object = new IsterXmlSimpleXMLImpl;

$file 'URL_del_fichero_XML';
if (
file_exists($file)){ 

// código si existe el fichero

} else {

// código si no se han podido recoger datos


No sé muy bien por qué, pero no funciona... siempre hace como si el fichero XML no existiera... de lo cual deduzco que el file_exists está mal empleado ahí...
¿Dónde está el fallo?
Proba poner "is_file" en vez de "file_exists"
o sea
Código PHP:
if (is_file($file)){ 
Saludos
__________________
TecnosWA: Blog de Recursos Webmasters
  #16 (permalink)  
Antiguo 28/06/2008, 13:41
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por Bkwxs Ver Mensaje
Proba poner "is_file" en vez de "file_exists"
o sea
Código PHP:
if (is_file($file)){ 
Saludos
Tampoco...
El resultado es el mismo, hace como si el archivo XML no existiera, cuando sí que existe


Planteo el problema de otra manera...
Si yo sé que cuando el archivo XML no existe mi pagina devuelve un Fatal Error determinado... ¿Cómo hago para mostrar un código determinado en lugar del mensaje de error? ¿Es posible hacer ésto?
  #17 (permalink)  
Antiguo 29/06/2008, 13:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Tratar archivo XML con PHP

file_exists solo sirve en archivos locales, si tu archivo es un URL yo creo lo mejor es tratar hacer una petición al archivo usando fsockopen.

Saludos.
  #18 (permalink)  
Antiguo 04/07/2008, 11:49
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por GatorV Ver Mensaje
file_exists solo sirve en archivos locales, si tu archivo es un URL yo creo lo mejor es tratar hacer una petición al archivo usando fsockopen.

Saludos.
Gracias!
De todas maneras, he llegado a la conclusión de que por ahí no viene el problema, ya que el archivo siempre existe... el problema es que me ocasionalmente ciertas páginas que descargan datos de archivos XML tiran el error

Fatal error: Call to a member function on a non-object in D:\Inetpub\webs\falotroncom\modules\Torneo_Apuesta s\apu_1X2.php on line 100

La línea 100 dice...
Código PHP:
foreach($doc->{'punter-odds'}->game as $game
Y tras varios días estudiando los momentos en los que salta el error he llegado a la conclusión de que el problema es que en ese momento el archivo XML que cargo en $doc está siendo editado, o está temporalmente inaccesible...

Por tanto, pienso que la solución a este "problema" sería personalizar el shout para ese error en concreto, para que cuando se produzca aparezca un cierto texto en lugar del mensaje Fatal Error...
¿Cómo podría hacer esto, teniendo en cuenta que tengo que trabajar con PHP4?
  #19 (permalink)  
Antiguo 04/07/2008, 12:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Tratar archivo XML con PHP

Hola falotron,

Tendrías que comprobar si $doc->{'punter-odds'}->game te regresa un objeto, por ejemplo:
Código PHP:
$gameNode $doc->{'punter-odds'};
if( 
$game ) {
     foreach( 
$gameNode->game as $game )

Saludos.
  #20 (permalink)  
Antiguo 04/07/2008, 13:46
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

¿No debería ser entonces algo así?

Código PHP:
$gameNode $doc->{'punter-odds'};
if (
is_object($game)) {
     foreach( 
$gameNode->game as $game )

¿O me estoy colando?
  #21 (permalink)  
Antiguo 05/07/2008, 07:54
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

Cita:
Iniciado por falotron Ver Mensaje
¿No debería ser entonces algo así?

Código PHP:
$gameNode $doc->{'punter-odds'};
if (
is_object($game)) {
     foreach( 
$gameNode->game as $game )

¿O me estoy colando?
Me estaba colando...
De todas manera... Solucionado! Muchas gracias!

El código correcto finalmente fue...
Código PHP:
foreach($doc->{'punter-odds'}->game as $game)
{

if (
is_object($game)) {
// codigo si $game es un objeto
} else {
// codigo si $game no es un objeto
}


  #22 (permalink)  
Antiguo 10/07/2008, 22:43
 
Fecha de Ingreso: abril-2007
Ubicación: Merlo
Mensajes: 314
Antigüedad: 17 años
Puntos: 3
Respuesta: Tratar archivo XML con PHP

Hola, yo estoy en lo mismo, tengo este XML
y el siguiente codigo php
Código PHP:
<?php
///CODIGO OFRECIDO CREADO POR TUTORES.ORG
function leer_XML($nombre_archivo,$cuantos_resultados){
$archivo_XML file_get_contents ($nombre_archivo);
if (empty(
$archivo_XML))
die(
"No pudimos conectar");

preg_match_all("|<item>(.*)</item>|sU"$archivo_XML$items);

$listar_nodos = array();

foreach (
$items[1] as $key => $item)
{
preg_match("|<title>(.*)</title>|s"$item$titulo);
preg_match("|<link>(.*)</link>|s"$item$enlace);
preg_match("|<description>(.*)</description>|s"$item$descripcion);

$listar_nodos[$key]['title'] = $titulo[1];
$listar_nodos[$key]['link'] = $enlace[1];
$listar_nodos[$key]['description'] = $descripcion[1];

}
for (
$i 0$i $cuantos_resultados$i++) 
{
echo 
'<a href="' $listar_nodos[$i]['link']. '" target="_blank">' $listar_nodos[$i]['title']. '</a><br>';
echo 
$listar_nodos[$i]['description']."<br>";
}
$archivo_XML ""

}
// DE ESTA MANERA LLAMAMOS A LA FUNCION leer_XML
// leer_XML(URL_ARCHIVO,CANTIDAD);
leer_XML("http://www.infobae.com/adjuntos/html/RSS/hoy.xml",10);
?>
que me muestra algo asi
Ahora, como saco las etiquetas "<strong>" que se supone hacen "Negrita" el texto que esta adentro, y como saco las "<BR>" que quedaron por ahi
Saludos
EDITO era problema del archivo de infobae, con el de clarin funciona bien.

Última edición por Gustavo1973; 10/07/2008 a las 22:55
  #23 (permalink)  
Antiguo 11/07/2008, 04:26
 
Fecha de Ingreso: septiembre-2006
Mensajes: 68
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tratar archivo XML con PHP

¿Resuelto entonces?

Por cierto, viendo tu código me has ayudado a resolver una cuestión que tenía pensada para lo que estoy haciendo yo (y que se me estaba poniendo pesada ya xD)
  #24 (permalink)  
Antiguo 11/07/2008, 09:53
 
Fecha de Ingreso: abril-2007
Ubicación: Merlo
Mensajes: 314
Antigüedad: 17 años
Puntos: 3
Respuesta: Tratar archivo XML con PHP

Funciona re bien, solo le tienes que agregar el estilo y listo!!!
Ademas es cortito y sencillo.
hace click en "asi" y vas a ver el resultados.
Saludos
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 2 personas




La zona horaria es GMT -6. Ahora son las 15:11.