XML - Llevaer datos de fichero XML a tabla SQL Server

 
Vista:

Llevaer datos de fichero XML a tabla SQL Server

Publicado por Sergio (1 intervención) el 11/02/2003 18:19:51
Pues con eso lo digo todo:
Tengo un fichero XML con los elementos titulo, autor y precio, y una tabla en una base de datos SQL server con los mismos campos.

¿Como vuelco la informacion del fichero XML a la tabla?
Tambien necesito el paso inverso, es decir, desde las tablas, generar un archivo XML.

Ayuda plisssssssss!!!

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Volcado de datos entre archivo XML y tabla SQL Server

Publicado por Alejandro (258 intervenciones) el 07/07/2023 19:58:53
Para volcar la información del archivo XML a la tabla en la base de datos SQL Server, y viceversa, es posible utilizar diferentes enfoques y herramientas. A continuación, te proporcionaré una solución utilizando el lenguaje de programación C# y las clases de .NET para trabajar con XML y bases de datos SQL Server.

1. Volcar información del archivo XML a la tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Data.SqlClient;
using System.Xml;
 
public class XmlToSql
{
    public static void Main()
    {
        string xmlFilePath = "ruta_del_archivo.xml";
        string connectionString = "Data Source=nombre_servidor;Initial Catalog=nombre_base_datos;User ID=nombre_usuario;Password=contraseña;";
 
        // Leer el archivo XML
        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.Load(xmlFilePath);
 
        // Establecer la conexión a la base de datos
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
 
            // Recorrer los elementos del archivo XML
            foreach (XmlNode node in xmlDocument.DocumentElement.ChildNodes)
            {
                string titulo = node["titulo"].InnerText;
                string autor = node["autor"].InnerText;
                decimal precio = decimal.Parse(node["precio"].InnerText);
 
                // Insertar los datos en la tabla de la base de datos
                SqlCommand command = new SqlCommand("INSERT INTO NombreTabla (titulo, autor, precio) VALUES (@titulo, @autor, @precio)", connection);
                command.Parameters.AddWithValue("@titulo", titulo);
                command.Parameters.AddWithValue("@autor", autor);
                command.Parameters.AddWithValue("@precio", precio);
                command.ExecuteNonQuery();
            }
 
            connection.Close();
        }
    }
}

Asegúrate de reemplazar "ruta_del_archivo.xml", "nombre_servidor", "nombre_base_datos", "nombre_usuario" y "contraseña" con los valores correspondientes a tu entorno. También debes ajustar "NombreTabla" con el nombre de la tabla en la base de datos donde deseas insertar los datos.

2. Generar archivo XML a partir de los datos de la tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Data.SqlClient;
using System.Xml;
 
public class SqlToXml
{
    public static void Main()
    {
        string xmlFilePath = "ruta_destino.xml";
        string connectionString = "Data Source=nombre_servidor;Initial Catalog=nombre_base_datos;User ID=nombre_usuario;Password=contraseña;";
 
        // Establecer la conexión a la base de datos
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
 
            // Obtener los datos de la tabla
            SqlCommand command = new SqlCommand("SELECT titulo, autor, precio FROM NombreTabla", connection);
            SqlDataReader reader = command.ExecuteReader();
 
            // Crear el documento XML
            XmlDocument xmlDocument = new XmlDocument();
            XmlElement rootElement = xmlDocument.CreateElement("libros");
            xmlDocument.AppendChild(rootElement);
 
            // Generar los elementos XML a partir de los datos de la tabla
            while (reader.Read())
            {
                string titulo = reader["titulo"].ToString();
                string autor = reader["autor"].ToString();
                decimal precio = (decimal)reader["precio"];
 
                XmlElement libroElement = xmlDocument.CreateElement("libro");
 
                XmlElement tituloElement = xmlDocument.CreateElement("titulo");
                tituloElement.InnerText = titulo;
                libroElement.AppendChild(tituloElement);
 
                XmlElement autorElement = xmlDocument.CreateElement("autor");
                autorElement.InnerText = autor;
                libroElement.AppendChild(autorElement);
 
                XmlElement precioElement = xmlDocument.CreateElement("precio");
                precioElement.InnerText = precio.ToString();
                libroElement.AppendChild(precioElement);
 
                rootElement.AppendChild(libroElement);
            }
 
            reader.Close();
 
            // Guardar el archivo XML
            xmlDocument.Save(xmlFilePath);
 
            connection.Close();
        }
    }
}

Asegúrate de reemplazar "ruta_destino.xml", "nombre_servidor", "nombre_base_datos", "nombre_usuario" y "contraseña" con los valores correspondientes a tu entorno. También ajusta "NombreTabla" con el nombre de la tabla de la base de datos de la cual deseas generar el archivo XML.

Ten en cuenta que estas soluciones son solo ejemplos básicos y que puedes adaptarlas según tus necesidades y estructura de datos. Además, ten en cuenta las consideraciones de seguridad al trabajar con consultas SQL y datos provenientes de archivos XML.

Espero que esto te ayude a volcar la información del archivo XML a la tabla y generar un archivo XML a partir de los datos de la tabla en SQL Server. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar