Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/10/2005, 09:59
Abite
 
Fecha de Ingreso: septiembre-2005
Mensajes: 70
Antigüedad: 21 años
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($fp, 4096))
    
xml_parse($xml_parser, $data, feof($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