Ejemplo: serializar datos a una cadena (de XML a BD)
Este ejemplo explica paso a paso cómo crear un diseño de asignación que serializa datos en una cadena de texto. El ejemplo viene acompañado de un archivo de muestra. Si desea consultar el archivo de muestra antes de empezar con el ejemplo, puede hacerlo en esta ubicación: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\SerializeToString.mfd.
Imaginemos que tenemos un archivo XML (y su correspondiente esquema) compuesto por varios elementos <Person>. Cada elemento <Person> describe el nombre de una persona, su apellido, su puesto, su extensión de teléfono y su dirección de correo electrónico:
<Person> </Person> |
Nuestro objetivo es extraer cada elemento <Person> del archivo XML e insertarlo literalmente (incluidas las etiquetas XML) en un nuevo registro de BD de la tabla PEOPLE de una base de datos SQLite. La tabla PEOPLE solamente contiene dos columnas: ID y PERSON. Esta sería su definición completa:
CREATE TABLE PEOPLE (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, PERSON TEXT); |
Una vez ejecutada la asignación, el resultado esperado es que la tabla PEOPLE tenga tantas filas como elementos <Person> contenía el archivo XML.
Para conseguir este objetivo debe seguir estos pasos:
1.Añada el componente XML de origen (con el comando de menú Insertar | Archivo o esquema XML). El archivo de muestra está en esta ubicación: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\MFCompany.xml.
2.Cree una copia del componente XML (mediante copia y pega).
3.En la segunda copia del componente XML haga clic en el botón y seleccione Serializar XML en cadenas en el menú contextual.
4.Haga clic con el botón derecho en la copia del componente XML y seleccione Cambiar de elemento raíz en el menú contextual. Ahora cambie el elemento raíz por <Person>.
Por lo general, el elemento raíz puede cambiarse por cualquier elemento que tenga una declaración global (no local) en el esquema XML. Los elementos que no estén definidos globalmente en el esquema no aparecerán en el cuadro de diálogo "Seleccione un elemento raíz". |
5.Haga doble clic en el componente y deshabilite la casilla Escribir declaración XML. Esto sirve para impedir que la declaración XML se escriba por cada elemento <Person>.
6.Añada el componente de base de datos SQLite de destino al área de asignación (la base de datos está en esta ubicación: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\\dbserialize.db). Para añadir el componente de base de datos seleccione el comando de menú Insertar | Base de datos (véase también Conectarse a una base de datos). Cuando solicite un objeto de base de datos, seleccione la tabla PEOPLE.
7.Conecte los componentes tal y como puede ver en la imagen siguiente. En el lado izquierdo de la asignación, el elemento <Person> se asigna al componente de serialización. En el lado derecho el valor de cadena serializado se inserta en la columna PERSON de la tabla de BD PEOPLE. Por último, el conector que une <Person> con la tabla PEOPLE indica que se debe crear un registro nuevo por cada elemento <Person> que se detecte.
8.Haga clic en el botón A:In del componente de base de datos y haga lo siguiente:
a.Seleccione la opción Eliminar todos los registros de la tabla. Cuando se ejecute la asignación esto eliminará cualquier registro de la BD que exista antes de insertar registros nuevos.
b.Seleccione la opción Generada por la BD, junto a la columna ID. Esto garantiza que la BD genere el ID del registro. Observe que la opción Generada por la BD aparece solamente si la columna admite esta opción. Las columnas que no son un campo identitario ni autoincrementado está disponible la opción max+1; esta opción comprueba cuál es el valor máximo que ya existe en esa columna e inserta el siguiente número entero disponible incrementado por 1.
Observe que está seleccionada la acción max()+1 para la columna ID. Esto indica que MapForce debe analizar cuál es el valor de ID máximo que ya existe en la BD y que debe insertar el entero siguiente, incrementado en 1. |
Ya ha terminado de crear un diseño de asignación que serializa datos a una cadena. Si hace clic en el panel Resultados, la vista previa de la consulta SQL indica que en la BD se insertarán registros distintos para cada elemento <Person> del archivo XML.