Foros del Web » Programación para mayores de 30 ;) » Programación General »

importar xml

Estas en el tema de importar xml en el foro de Programación General en Foros del Web. Saludos buenas, Resulta que tengo que hacer un script php que importe un fichero XML a una base de datos MySQL. ¿Por qué hacer el ...
  #1 (permalink)  
Antiguo 08/09/2009, 07:48
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
importar xml

Saludos buenas,

Resulta que tengo que hacer un script php que importe un fichero XML a una base de datos MySQL. ¿Por qué hacer el script? Pues porque tengo que ejecutarlo X veces al día para que se actualice con los datos actualizados, además tenerlo todo en un php me servirá para tratar esos datos aparte de meterlos en las tablas MySQL.

Ahora viene el problema.. el XML que tengo que importar tiene un montón de nodos, de subnodos, y de "subnodos de subnodos", por ejemplo

<datos>
<particulares>
<nombre>
</nombre>
</particulares>
</datos>

Esto es un ejemplo pero el XML que tengo es bastante mas lioso.. He estado probando el Altova MapForce y vale lo importa y tal pero no me genera el código en php y lo necesito en PHP.

¿Conocéis algún framework, aplicación o forma de hacerlo así sencillita?

Un saludo y graciass ;)
  #2 (permalink)  
Antiguo 08/09/2009, 09:30
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: importar xml

Cita:
importe un fichero XML a una base de datos MySQL
Me dejas en duda de si estas importando o exportando.

Es de XML a MySQL o a la inversa?

Si es tomar datos desde XML, usas simpleXML de PHP, o el DOM PHP.

Si estas por generar un XML con PHP, es la mar de sencillo. Usas "echo".
Mi ejemplo es con CDATA, pero sin eso es mas simple aun.


// generarlo
$xml = fopen($ruta.'descripciones.xml', "w+");

$a_escribir = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n";
$a_escribir.= "<galeria>\n\n";

$contenido[] = htmlentities("<item id='$elemento'>\n"
. "<titulo><![CDATA[ ]]> \n"
. "</titulo>\n"
. "<descripcion><![CDATA[ ]]> \n"
. "</descripcion>\n"
. "</item>\n\n");

for($i=0;$i<count($contenido_);$i++)
{
$a_escribir.= html_entity_decode($contenido_[$i]);
};

$a_escribir.= "</galeria>";

fwrite ($xml,$a_escribir);
  #3 (permalink)  
Antiguo 08/09/2009, 09:47
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: importar xml

Hola

Es para pasar de XML a MySQL, pero ya te digo que el XML es un lio porque tiene un montonazo de nodos... Supongo que todo será tirarle paciencia con el simplexml de php..

Gracias =D
  #4 (permalink)  
Antiguo 09/09/2009, 08:50
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: importar xml

Si. Lo mas sencillo es simplexml .

No importa la cantidad de nodos. En verdad son todos nodos hermanos, por lo que veo, o sea que se les da trato igual. Mismo, si fueran padre-hijo tambien seria la mar de sencillo.

Lo complicado es elegir elementos por atributo, cosa que en tu xml no existe.
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




La zona horaria es GMT -6. Ahora son las 01:51.