Foros del Web » Programando para Internet » PHP »

insertar datos de xml en mysql

Estas en el tema de insertar datos de xml en mysql en el foro de PHP en Foros del Web. Hola a todos! Quisiera saber si es posible, mediante un script en php, volcar toda la información de un archivo xml a una base de ...
  #1 (permalink)  
Antiguo 25/12/2005, 19:25
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
insertar datos de xml en mysql

Hola a todos!

Quisiera saber si es posible, mediante un script en php, volcar toda la información de un archivo xml a una base de datos mysql.

A lo máximo que he llegado es a transformar al xml en un enorme array, pero no sé como manejarlo.

Saludos
  #2 (permalink)  
Antiguo 25/12/2005, 21:13
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 12 años
Puntos: 0
posible lo es (ya lo he echo) pero necesita un paso intermedio. lo que hago yo es, valiendome de las funciones de interprete xml, transformar al archivo en un array multidimensional. a partir de hay es muy facil trabajar. el script que utilizo es este:
Código:
Class XMLParser
{
	var $xml;
	var $depth;
	var $refer;
	var $index;
	var $root;
	
	function XMLParser($index = 'Index')
	{
		$this->xml = $this->refer = array();
		$this->index = $index;
		$this->depth = 0;
	}
	
	function tagStart($parser, $name, $attrs)
    {
	    if($this->depth)
	    {
		    if(isset($attrs[$this->index])) {
			    $this->refer[$this->depth] = &$this->refer[$this->depth - 1][$name][(int)$attrs[$this->index]];
		    }
		    else {
			    $this->refer[$this->depth] = &$this->refer[$this->depth - 1][$name];
		    }
	    }
	    else
	    {
		    $this->refer[] = &$this->xml[$name];
		    $this->root = $name;
	    }
	    
	    $this->depth++;
    }

    function tagEnd($parser, $name) {
	    $this->depth--;
    }

    function readData($parser, $data)
    {
	    if(strlen(trim($data))) {
		    $this->refer[$this->depth - 1] .= $data;
	    }	
	}
	
	function ParseXML($xml)
	{
	   $parser = xml_parser_create('ISO-8859-1');
	   
	   xml_set_object($parser, $this);
       xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
	   
       xml_set_element_handler($parser, 'tagStart', 'tagEnd');
       xml_set_character_data_handler($parser, 'readData');
       
       $file = explode("\n", $xml);
	   $lines = count($file);
       
       for($i = 0; $i < $lines; $i++)
       {
	       if(!xml_parse($parser, $file[$i])) {
    	       die("XML PARSE ERROR on line ".($i + 1)."\n");
	       }
       }
       
       xml_parser_free($parser);
	}
}
?>
los datos quedan guardados en en $xml. despues de eso es realmente sencillo trabajar.
  #3 (permalink)  
Antiguo 25/12/2005, 22:02
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
gracias por contestar,

yo uso una clase similar y los datos se me quedan en un array (en tu caso $xml) pero después no sé como llamarlos para insertarlos en la base de datos
  #4 (permalink)  
Antiguo 26/12/2005, 16:16
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 12 años
Puntos: 0
eso ya dependera de la organización que le hayas dado al array. yo utilizo las mismas claves que aparecen en el archivo. haciendo:

Código:
<?php
$personal = $xmlparser->xml['Personal']['Empleado'];
?>
ya puedo recorrer el personal sin mucho esfuerzo.
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 09:17.