Foros del Web » Programando para Internet » PHP »

Problema xml-mysql-php

Estas en el tema de Problema xml-mysql-php en el foro de PHP en Foros del Web. Hola gente. Bueno, paso a decribir el problema: Resulta que tengo un cliente que administra una biblioteca con cientos de libros. Este lleva un control ...
  #1 (permalink)  
Antiguo 21/02/2006, 12:40
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 19 años, 6 meses
Puntos: 0
Pregunta Problema xml-mysql-php

Hola gente.
Bueno, paso a decribir el problema:
Resulta que tengo un cliente que administra una biblioteca con cientos de libros. Este lleva un control de los libros con un programa llamado ISIS, donde él almacena los nombres, autores, fechas de edición, entro otras cosas de cada uno de los libros.

Ahora él quiere tener toda esa información almacenada en la web, con un buscador de libros por autor, fecha, etc.

Este programa (ISIS), tiene la posibilidad de crear un archivo backup en formato XML, por lo tanto, a mi se me ocurrió la idea de llenar la base de datos a partir de este archivo XML. Para llegar a hacer esto necesitaba una manera de leer este archivo XML e ir insertando en la bd los tags del XML.

Encontré una clase de php que cumplía todo esto. Lo único que tenía que tener establecido desde el inicio era la tabla donde iba a insertar los valores del XML, esto significa crear todos los campos y sus tipos de datos (varchar, int, etc).
Ejecuté un ejemplo (que traía esta clase) y todo se hizo a la perfección

Mi problema surgió al probar con mi archivo XML, encontré esta estructura dentro del archivo (este caso es a modo de ejemplo de lo que serían 2 libros):

Código:
<RECORD>
<nombre>La odisea</nombre>
<codigo>001</codigo>
<autor>Homero</autor>
</RECORD>

<RECORD>
<nombre>El Php</nombre>
<codigo>002</codigo>
<autor>Roberto</autor>
<autor>Juan</autor>
</RECORD>
Aquí me di cuenta del error:
En la bd solo tengo los campos "nombre", "codigo", "autor" (aparte de un id autonumérico), y si se fijan en el segundo libro (El Php), tengo dos tags <autor>. Ahí está mi problema.

La idea es no cambiar el archivo a mano y encontrar una forma de que si se me presenta un caso donde se repitan por ejemplo el tag autor, en este caso, se forme algo así:

Código:
<RECORD>
<nombre>El Php</nombre>
<codigo>002</codigo>
<autor>Roberto, Juan</autor>
</RECORD>
Necesito una manera de eliminar los tags que se repitan (que puede ser cualquiera, en este caso solo presenté el caso del tag autor), y concatenerlos en un solo tag autor.

¿Exciste otra manera de crear el buscador a apartir del xml?, Y si no es así, ¿Cómo puedo solucionar el problema de la repetición de los tags?.

Gracias.
__________________
ratamaster
  #2 (permalink)  
Antiguo 21/02/2006, 13:01
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Tendrías que responderte si necesitas los 2 o más autores o no.
El codigo que tienes que hace, saca ambos autores o sólo uno?
  #3 (permalink)  
Antiguo 21/02/2006, 13:19
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 19 años, 6 meses
Puntos: 0
Tienen que estar todos los los autores, así como cualquier otro tag que se repita de un libro.

El código que tengo (la clase), arma un árbol con la jerarquía de tags.
Una ves armado ejecuta las queries. En este caso la query no corre y da este error: XML error: not well-formed (invalid token) at line 2641
__________________
ratamaster
  #4 (permalink)  
Antiguo 22/02/2006, 08:35
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Aqui, el error te dice que el xml está "mal formado", esto implicaría que el xml hace referencia a algun DTD o XSchema que no se está respetando, lo cual sería probablemente un error del sistema que crea el xml. Habría que ver el encabezado del xml para saber si apunta a algun DTD o XSchema y luego ver dicho DTD o XSchema para saber si el documento respeta tales definiciones. El DTD o XSchema podría indicar que el tag <autor> sólo puede aparecer una vez, por ejemplo.
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 12:11.