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

Generar archivo XML con estructura XS

Estas en el tema de Generar archivo XML con estructura XS en el foro de Mysql en Foros del Web. Hola, tengo que generar un archivo XML con la siguiente estructura Código: <Empleado> - <persona> <tipo_documento>?</tipo_documento> <nif>?</nif> <apellidos>?</apellidos> <nombre>?</nombre> <f_nacimiento>?</f_nacimiento> <lugar_nacimiento>?</lugar_nacimiento> <cod_provincia_nacimiento>?</cod_provincia_nacimiento> <desc_provincia_nacimiento>?</desc_provincia_nacimiento> <cod_pais_nacimiento>?</cod_pais_nacimiento> <cod_sexo>?</cod_sexo> ...
  #1 (permalink)  
Antiguo 08/01/2010, 11:55
 
Fecha de Ingreso: febrero-2009
Mensajes: 77
Antigüedad: 15 años, 2 meses
Puntos: 0
Generar archivo XML con estructura XS

Hola,
tengo que generar un archivo XML con la siguiente estructura

Código:
<Empleado>
- <persona>
<tipo_documento>?</tipo_documento> <nif>?</nif> <apellidos>?</apellidos> <nombre>?</nombre> <f_nacimiento>?</f_nacimiento> <lugar_nacimiento>?</lugar_nacimiento> <cod_provincia_nacimiento>?</cod_provincia_nacimiento> <desc_provincia_nacimiento>?</desc_provincia_nacimiento> <cod_pais_nacimiento>?</cod_pais_nacimiento> <cod_sexo>?</cod_sexo>
- <direccion_correspondencia>
<cod_tipo_via>?</cod_tipo_via> <nom_via>?</nom_via> <cod_postal>?</cod_postal> <poblacion>?</poblacion> <cod_municipio>?</cod_municipio> <cod_provincia>?</cod_provincia> <cod_pais>?</cod_pais> </direccion_correspondencia>
- <direccion_fiscal>
<cod_tipo_via>?</cod_tipo_via> <nom_via>?</nom_via> <cod_postal>?</cod_postal
Por lo que veo, corregidme si me equvoco, <Empleado> es el nombre de la BD, <persona>es una tabla, conde el resto son cada uno de los campos, <direccion_correspondencia> otra tabla, al igual que <direccion_fiscal>.

El problema, es que yo tengo esos datos definidos en una única tabla persona, es decr los datos propios de persona + los de direcc de correspondecia y fiscal para cada persona. Todo ello en la tabla persona. Por tanto el XML a generar ya va a tener una estructura diferente a la solicitada. ¿Cómo se puede solucionar esto?

Además hay un documento XSD que define la estructura y contenido del mensaje XML. Cómo aplico este fichero de intercambio, en dónde?

Código:
<xs:complexType name="Persona">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="tipo_documento" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="nif" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="apellidos" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="nombre" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="f_nacimiento" nillable="true"
type="xs:dateTime" />
<xs:element minOccurs="0" maxOccurs="1" name="lugar_nacimiento" type="xs:string"
/>
<xs:element minOccurs="0" maxOccurs="1" name="cod_provincia_nacimiento"
type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="desc_provincia_nacimiento"
type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="cod_pais_nacimiento"
type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="cod_sexo" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="direccion_correspondencia"
type="tns:Direccion" />
<xs:element minOccurs="0" maxOccurs="1" name="direccion_fiscal" type="tns:Direccion"
/>
<xs:element minOccurs="0" maxOccurs="1" name="telefono_particular" type="xs:string"
/>
<xs:element minOccurs="0" maxOccurs="1" name="telefono_profesional"
type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="telefono_movil_1" type="xs:string"
<xs:element minOccurs="0" maxOccurs="1" name="telefono_movil_2" type="xs:string"
/>
<xs:element minOccurs="0" maxOccurs="1" name="fax" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="email" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="url" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="cuenta_banco" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Direccion">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="cod_tipo_via" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="nom_via" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="cod_postal" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="poblacion" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="cod_municipio" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="cod_provincia" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="desc_provincia" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="cod_pais" type="xs:string" />
</xs:sequence>
</xs:complexType>
Así que las preguntas son, cómo genero el XML para que de una sola tabla tal y como lo tengo en la BD saque la estructura en el formato que me piden y cómo aplico ese XSD donde se define la estructura y contenido del mensaje XML?

Espero que se haya entendido.
Gracias, un saludo.
  #2 (permalink)  
Antiguo 09/01/2010, 02:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Generar archivo XML con estructura XS

No, los datos que tienes en el XML y la XSD no indican que obligatoriamente tengas que tener varias tablas. Puedes tenerlo todo en una única tabla, pero, para ayudarte, necesitaríamos saber
cuál es la estructura de tu tabla y los tipos de campo (algo que sí debe coincidir con lo indicado en la XSD). Lo puedes sacar con un
Código SQL:
Ver original
  1. SHOW CREATE TABLE nombretutabla
Te bastará con sacar los campos en el orden en que te indica la XSD, ayudándote de un SELECT con CONCAT, o quizás con programación.
Sólo tendrías un problema si te faltaran datos de los requeridos o si tuvieras varios de ellos incluidos en un único campo.
  #3 (permalink)  
Antiguo 09/01/2010, 02:54
 
Fecha de Ingreso: febrero-2009
Mensajes: 77
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Generar archivo XML con estructura XS

Hola,
los tipos los tengo de la forma que aparecen en el xsd. Algunos elementos no existen en mi BD, así que tendría que crearme nuevos campos con valor vacío para generar el xml.

El .xsd solamente vale para enlazarlo en la cabecera del xml y que compruebe si está bien formado no? Mi XML debe de tener alguna cabecera particular o específica aparte de lo de <?xml version="1.0"?> ????

Y otra cosa, he diferentes formas para generar el XML, en algun sitio he visto que usan ResponseWrite y ResponseWriteFile pasandole cadenas.....En otros ejemplos con XDocument y en otros con XMLDocument. No tengo nada claro qué método debería de utilizar.
Además hablan de usar LINQ en vez de DOM para crear los nodos, pero en los ejemplos que antes he citado no he visto nada del uso de LINQ.

A ver si alguno me puede aclarar estas dudas.
Saludos.
  #4 (permalink)  
Antiguo 09/01/2010, 04:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Generar archivo XML con estructura XS

riestra,
¿qué versión de MySQL usas? ¿Tienes introducidos los tags en campos de texto o simplemente el contenido? ¿qué sistema operativo utilizas?
  #5 (permalink)  
Antiguo 09/01/2010, 05:36
 
Fecha de Ingreso: febrero-2009
Mensajes: 77
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Generar archivo XML con estructura XS

MySql 5.0.5
Widows XP. Visual Studio 2008 ASP.NET sobre VB

No entiendo a que te refieres con los tags y el contenido.

Los tags del xml vienen definidos en el trozo de codigo que copie antes. Donde me dice los datos que tengo que mostrar. Luego el contenido lo tengo en mi BD, de dónde tengo que sacarlo para generar el XML apropiado que se ajuste al archivo XSD que también me han pasado.
  #6 (permalink)  
Antiguo 09/01/2010, 05:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Generar archivo XML con estructura XS

Algunas versiones de MySQL, a partir de la 5.1.6, creo, permiten incluir tags en los campos y trabajar con XPath. No es el caso, por lo que te pido que hagas esta consulta en tu tabla y nos pongas el resultado:
SHOW CREATE nombretutabla;
  #7 (permalink)  
Antiguo 09/01/2010, 06:02
 
Fecha de Ingreso: febrero-2009
Mensajes: 77
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Generar archivo XML con estructura XS

Hola,
no entiendo que tiene que ver eso con lo que he preguntado.....
De todas formas la salida del comando es:

Servidor: localhost
Base de datos: BD
Tiempo de generación: 09-01-2010 a las 12:00:09
Generado por: phpMyAdmin 3.2.0.1 / MySQL 5.1.36-community-log
consulta SQL: SHOW CREATE TABLE empleado;
Filas: 1

Table Create Table
empleado CREATE TABLE `empleado` (
`idEmpleado` int(4) ...


Además eso es solamente de una tabla y yo del XML tengo que sacar info de varias tablas diferentes.
  #8 (permalink)  
Antiguo 09/01/2010, 07:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Generar archivo XML con estructura XS

Tienes que decirnos las tablas, sus relaciones y los nombres de los campos de cada tabla. No creo que la tabla empleado tenga sólo el campo idEmpleado int(4)
  #9 (permalink)  
Antiguo 09/01/2010, 07:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Generar archivo XML con estructura XS

Vamos un detalle:
Un archivo XML, desde la óptica de VB.Net, guarda un DataSet, y un DataSet es un conjunto de uno o más DataTables.
Dinos cómo es la estructura de tablas que se guarda en el DataSet y describe la estructura de talas en las que se tiene que guardar, así como la relación de datos que hay en el DataSet que se obtiene del archivo XML.

Si no aportas información detallada del problema, no podremos ayudarte, porque lo tuyo no es un problema genérico.

En cuanto a lo que pide Jurena, es simple: Postea TODA la sentencia de creación de cada tabla, COMPLETA. Descripciones parciales no sirven.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 09/01/2010, 08:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Generar archivo XML con estructura XS

Quizás te estoy liando, pero quiero que veas algunas posibilidades:
1) si trabajas con phpmyadmin, puedes exportar los datos de una tabla como xml. El programa hecho con PHP se encarga de poner automáticamente los tags.
2) tienes la opción de usar --xml tanto con mysql como con mysqldump
3) hacerte tu propia salida según necesidades
y hay más, claro
Mira estos enlaces

http://dev.mysql.com/tech-resources/...ql5.1-6.0.html

http://dev.mysql.com/doc/refman/5.0/...d-options.html

Seguro que encontrarás ejemplos con el programa que utilizas.

Etiquetas: estructura, xml
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 17:45.