Registración Preguntas Home Mi Cuenta Mapa del Sitio
Buscar:
Buscar Guías sobre:
Escribe una guía
Procesando XML con PHP5 (SimpleXML)
Ver más Guías del autor
4 de 5 usuarios encontraron útil esta guía.
Modificada el 29/01/2008

Esta es una breve guía que le puede ser útil a todos los Socios que tengan PHP5. Está especialmente orientada a quienes son principiantes en PHP.

Como el soporte oficial de PHP4 va a terminar a fines del 2007, es casi seguro que la mayoría ya tenga PHP5. (Algunos hostings tienen varios entornos con diferentes versiones de PHP.)

Procesar XML en PHP5 es tan simple, que la extensión se llama SimpleXML. El código generado es en formato de objeto, por lo que los amantes de OOP van a estar felices. Igualmente, hay una forma de convertirlo a array asociativa multidimensional (con índices númericos y no numéricos,) y lo mostraré más abajo.

<?php
$url = "<dirección al xML de mercadolibre>";
$rawxml = file_get_contents($url); // guardamos el XML como string
$xml = simplexml_load_string($rawxml); // cargamos el objeto
echo "<pre>".nl2br(print_r($xml, true))."</pre>"; // mostramos la estructura
?>

(Nota: según la versión de PHP5, será lo que obtengas. Los atributos no son devueltos en PHP 5.0.x, pero sí en versiones superiores. Ver: http://www.php.net/manual/en/ref.simplexml.php#76201)

Esto significa que si tienes PHP 5.0.x necesitás un poco de regexp (expresiones regulares) para obtener el ID del item:

<?php
// los items están en $xml->listing->items
foreach($xml->listing->items->item as $item)
{
preg_match("/id=([0-9]+)$/i", $item->link, $match);
$item->id = $match[1];
// mostrar items
}
?>

Ese método no va a depender de la versión de PHP5, por lo que no vas a tener que cambiar el código si tu servidor local no coincide con tu servidor web (en mi caso, tengo 5.2 y mi hosting 5.0.)

Update: También podés obtener el ID usando $item->attributes()

<?php
// los items están en $xml->listing->items
foreach($xml->listing->items->item as $item)
{
$tmpid = $item->attributes();
$item->id = $tmpid['id'];
// tu código para mostrar items
}
?>

Si, por alguna razón, no quieres usar objetos, puedes hacer esto:

<?php
foreach($xml->listing->items->item as $item)
{
$tmp = get_object_vars($item);
$tmpid = $item->attributes();
$tmp['id'] = $tmpid['id'];
$items2[] = $tmp;
}
?>

Este método funciona en todas las versiones de PHP5. Fin de update.

De esta forma, podrás usar $items2[0]['title'] (por ejemplo.) Pero, más que nada, es útil si utilizas funciones que no aceptan objetos (como array_pop.)

Para un mejor rendimiento, te conviene guardar el XML en un archivo local o en una base de datos (si usas una base de datos, directamente arma una tabla con estructura acorde a los datos del xML.)

De todos modos, SimpleXML es muy rápido. Lo que tarda, a veces, es la petición del archivo remoto (el xML.)

Espero que les sea de utilidad.

Palabras Clave: Xml | Simplexml | Php5
4 de 5 usuarios encontraron útil esta guía.
El autor asume la total responsabilidad por el contenido de esta guía.
¿Crees que esta guía está en contra de las Políticas de MercadoLibre? Infórmalo aquí.
En esta sección encontrarás información publicada por Usuarios bajo su exclusiva responsabilidad. MercadoLibre no controla los contenidos de las Guías y no responderá por información inexacta, errónea o difamatoria, o por el uso que se haga de ella. El ingreso a la misma es decisión voluntaria del navegante quien acepta la posibilidad de encontrar material que puede afectar su susceptibilidad.
Contenido provisto por


Guías Relacionadas
Guía Para Integrar Xml En Tu S...
Xml Parameters (english Versio...
Pms Rank - Optimizando El Shop...
Script Megashopping 2.0 (caste...
Parte 1 - Los 4 Pasos Básicos ...

Ver Más...


Volver arriba