Tiempo invertido: 4 horas y 30 minutos, aproximadamente
17:00-21:30
Antes de poder empezar a parsear la informacion que se encuentra en el archivo XML, debemos saber como se estructura el archivo XML, una archivo XML esta conformado por nodos, estos nodos pueden ser padres de otro nodos o hermanos de uno de ellos, para poder entender esto de una forma mas clara podemos asociarlo con el proyecto de programacion que estamos realizando.
El nodo padre o el nodo principal es el nodo llamado <company> el cual tiene un nodo hijo llamado <period> y el cual tiene un nodo hijo llamado <farm> y este tiene un nodo hijo llamado <lot> y este tambien tiene un nodo hijo llamado <activity>, este ultimo tiene varios nodos hijos los cuales son <supply>, <service>, <machinery> acontinuacion se puede ver de una mejor forma:
<company>
<period startDate="07/12/2014" endDate="08/06/2015">
<farm name="Santander" code="25282" >
<lot name="Cisneros" code="23986" cropType="Frijol">
<activity description="Reciclaje de residuos organicos">
<machinery></machinery>
<service></service>
<supply></supply>
Para empezar a parsear todos los datos que se encuentran en el archivo XML se deben crear variables tablas para poder guardar de una forma temporal los diferentes datos que luego seran insertado de una forma masiva a la base de datos.
DECLARE @CropType TABLE(ID INT IDENTITY(1, 1), Name VARCHAR(50))
DECLARE @Cycle TABLE(ID INT IDENTITY(1, 1), StartDate DATE, EndDate DATE)
DECLARE @ActivityType TABLE(ID INT IDENTITY(1, 1), Name VARCHAR(50))
Estos son ejemplos de las variables tablas creadas para poder parsear los datos.
Una vez creadas las tablas se empezara a recorrer el archivo XML para ir obteniendo los datos que se requieren, para poder ingresar a los diferentes nodos ya antes mencionados se debe hacer el uso de unas instrucciones de SQL las cuales son las necesarias para poder ir accediendo nodo por nodo hasta encontrar el dato que se necesita.
INSERT INTO @Property(Name)
SELECT DISTINCT
farm.value('@name', 'VARCHAR(50)')
FROM @Doc.nodes('/company') AS x1(company)
cross apply x1.company.nodes('./period') AS x2(period)
cross apply x2.period.nodes('./farm') AS x3(farm)
Este es un ejeplo de como acceder al archivo en un nodo especifico y asi obtener la informacion que se requiere.
No hay comentarios:
Publicar un comentario