Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/10/2005, 09:59
Abite
 
Fecha de Ingreso: septiembre-2005
Mensajes: 70
Antigüedad: 18 años, 7 meses
Puntos: 0
Hola a todos, quiero añadir a mi base de datos el contenido de un archivo xml, hasta ahora lo que hacia era con fopen y fread, leer el archivo, guardar el contenido en un array, y con expresiones regulares obtener el contenido de las etiquetas y añadirlo a mi base de datos.

El problema se me plantea ahora que los archivos que tengo que subir a la BD tienen un tamaño de 30Mb, por lo cual el tema de meterlo en un array se plantea imposible.

¿Alguna idea de como añadir esa cantidad de información a mi base de datos?

Un saludo a todos y gracias por adelantado.

Alguna idea?

Bueno, al fin encontré un codigo que funciona, lo posteo por si a alguien le sirve:

Código PHP:
<?php

$insideitem 
false;
$tag "";
$nombre "";
$descripcion "";
$link "";

function 
startElement($parser$name$attrs) {
    global 
$insideitem$tag$nombre$descripcion$link;
    if (
$insideitem) {
        
$tag $name;
    } elseif (
$name == "ITEM") {
        
$insideitem true;
    }
}

function 
endElement($parser$name) {
    global 
$insideitem$tag$title$description$link;
    if (
$name == "ITEM") {
    
    print 
"    Nombre ->".$nombre."<br />";
    print 
"    Descripcion ->".$descripcion."<br />";
    print 
"    Link ->".$link."<br /><hr />";

        
$nombre "";
        
$descripcion "";
        
$link "";
        
$insideitem false;
    }
}

function 
characterData($parser$data) {
    global 
$insideitem$tag$title$description$link;
    if (
$insideitem) {
        switch (
$tag) {
            case 
"TITLE":
            
$title .= $data;
            break;

            case 
"DESCRIPTION":
            
$descripcion .= $data;
    
            break;
            case 
"LINK":
            
$link .= $data;
            break;
        }
    }
}

$xml_parser xml_parser_create();
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");
$fp fopen($file,"r")
    or die(
"Error reading RSS data.");
while (
$data fread($fp4096))
    
xml_parse($xml_parser$datafeof($fp))
        or die(
sprintf("XML error: %s at line %d"
            
xml_error_string(xml_get_error_code($xml_parser)), 
            
xml_get_current_line_number($xml_parser)));
fclose($fp);
xml_parser_free($xml_parser);

?>
Un saludo

Última edición por GatorV; 06/04/2009 a las 20:22