Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/03/2006, 13:21
Avatar de rasmarko
rasmarko
 
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 78
Antigüedad: 21 años, 6 meses
Puntos: 1
Mensaje

Existe una class para poder extraer datos de XML
Esta class te devuelve una matriz con todos los contenidos, gracias a las funciones array_push() y array_pop()

Código PHP:
<?
 
class xml {
   
    var 
$matriz = array();
    var 
$resultado;
    var 
$informacion;
   
    function 
xml($contenido) {
   
            
$this->resultado xml_parser_create ();
            
xml_set_object($this->resultado,$this);
            
xml_set_element_handler($this->resultado"abrir""cerrar");
           
            
xml_set_character_data_handler($this->resultado"info");
       
            
$this->informacion xml_parse($this->resultado,$contenido);
                          
            
xml_parser_free($this->resultado);
           
            return 
$this->matriz;
    }
    function 
abrir($parser$nombre$atributos) {
        
$etiqueta = array("nombre"=>$nombre,"atributos"=>$atributos);
        
array_push($this->matriz,$etiqueta);
    }
   
    function 
info($parser$etiqueta_info) {
        if(
trim($etiqueta_info)) {
            if(isset(
$this->matriz[count($this->matriz)-1]['info'])) {
               
$this->matriz[count($this->matriz)-1]['info'] .= $etiqueta_info;
            }
            else {
               
$this->matriz[count($this->matriz)-1]['info'] = $etiqueta_info;
            }
        }
    }
   
    function 
cerrar($parser$nombre) {
       
$this->matriz[count($this->matriz)-2]['hijo'][] = $this->matriz[count($this->matriz)-1];
        
array_pop($this->matriz);
    }
 }
 
 
?>
El uso de esta matriz es muy sencilla. Simplemente tendrías que verificar qué matriz corresponde a la información y luego imprimir.

Ejemplo:

Código PHP:
<?
$url 
"http://www.linka-web.com/index.xml";
$xml_contenido file_get_contents($url,'r');

$xml = new xml($xml_contenido);

echo 
'<pre>';
print_r($xml->matriz);
echo 
'</pre>';

?>
Lo anterior te devolvería todos los índices de la matriz, y puedes darle un uso práctico así... retomando aún el objeto $xml:

Código PHP:
 <?
 
 $xml 
= new xml($xml_contenido);
 
 
$etiqueta $xml->matriz[0][hijo][0][hijo][1][nombre];
$atributos $xml->matriz[0][hijo][0][hijo][1][atributos];
$informacion $xml->matriz[0][hijo][0][hijo][1][info];

echo 
'Etiqueta: '.$etiqueta;
echo 
'<br/>Atributos: '.$atributos;
echo 
'<br/>Información: '.$informacion;
 
 
?>
Espero que te sea de mucha utilidad como lo es para mi.
__________________
Fuentes - Diseweb - Frases Célebres