Como crear y leer un archivo XML en C#

Hola, la primera entrega para este blog consiste en hacer un sencillo programa en C# con el framework 2.0 que nos permita crear un archivo XML para la configuración de nuestro sistema. Este ejemplo servirá para configurar el acceso a la base de datos de nuestro programa, en este archivo colocaremos la dirección IP, etc, hasta el usuario de la BD, ya cada quien según sus requisitos de seguridad sabrá que incluir y que no en el archivo XML, asi que, comenzamos!! Lo primero que tenemos que hacer es abrir el Visual Studio o SharpDevelop como prefieran y crear un proyecto en donde deberán crear un formulario como este: Les recalco que solo es un ejemplo de caracter ilustrativo (por el asunto de la contraseña y el usuario en el archivo XML). Bien, ahora vamos a crear los métodos que nos servirán para crear el archivo XML.
 private bool fCrearArchivoXml(string sArchivo)
{
bool bCreado = false;
XmlWriterSettings settings = new XmlWriterSettings();
   settings.Indent = true;
   settings.IndentChars = ("    ");
   try
   {
    using (XmlWriter xmlEscribe = XmlWriter.Create(sArchivo, settings))
    {
     xmlEscribe.WriteStartElement("ArchivoConfiguracion");       
        xmlEscribe.WriteStartElement("Configuracion");
         xmlEscribe.WriteElementString("IP" , txtIpAddress.Text);
         xmlEscribe.WriteElementString("USUARIO", txtUser.Text);
         xmlEscribe.WriteElementString("CONTRASENA", txtPassword.Text);
         xmlEscribe.WriteElementString("BASEDATOS", txtDataBase.Text);
        xmlEscribe.WriteEndElement();        
        xmlEscribe.WriteElementString("FECHA", DateTime.Now.ToString());
        xmlEscribe.WriteEndDocument();
        bCreado = true;
     xmlEscribe.Flush();
     }
   }
   catch (Exception ex)
   {
       MessageBox.Show("Error al crear el archivo xml fCrearArchivoXml(): " + ex.Message);
   }
   return bCreado;
}
En este método definimos las etiquetas que formarán nuestro archivo XML. Ahora, para mandar llamar el método anterior debemos de crear el evento click del botón "Crear", dentro de ese evento colocaremos el llamado a la siguiente función:
private void fGuardar()
{
    string sRutaParaGuardarDocumento = "";
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.Filter = "Archivos XML|*.xml|Todos los archivos|*.*";
    saveFileDialog1.Title = "Guardar archivo de configuración xml.";
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        sRutaParaGuardarDocumento = saveFileDialog1.FileName.ToString();
        if(fCrearArchivoXml(sRutaParaGuardarDocumento))
        {
         MessageBox.Show("Archivo de configuración creado.","Makaveli XCF");
          fLimpiarCampos();
         txtIpAddress.Focus();          
        }
    }
}
El código anterior se encarga de crear un Save File Dialog para ubicar en que parte queremos guardar el archivo XML cuando lo creamos. Para terminar este sencillo ejemplo solo nos falta validar los campos (que eso no lo explicaré) y la función para abrir y modificar el archivo XML. Para modificar el archivo XML debemos generar el evento en el menu "Archivo" de la ventana de nuestra aplicación, en él, deberemos colocar el llamado a un método nombrado "Abrir", a continuación el código fuente en orden.
void OptLoadClick(object sender, EventArgs e)
{
fAbrir();
}

private void fAbrir()
{
OpenFileDialog dlgNombreArchivo = new OpenFileDialog();
        string sRuta = "";
        dlgNombreArchivo.Filter = "Archivo de configuración xml|*.xml|Todos los archivos|*.*";
        dlgNombreArchivo.Title = "Makaveli XCF.";
        try
        {
         if (dlgNombreArchivo.ShowDialog() == DialogResult.OK)
         {
          sRuta= dlgNombreArchivo.FileName.ToString();
                fObtenerDatosXml(sRuta);
         }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error al abrir el archivo de configuración xml." + ex.Message,"Makaveli XCF",MessageBoxButtons.OK,MessageBoxIcon.Error);
        }
}

private void fObtenerDatosXml(string sRuta)
{
  try
        {
           using (XmlReader reader = XmlReader.Create(sRuta))
           {
  reader.Read();
  reader.ReadStartElement("ArchivoConfiguracion");
   reader.ReadStartElement("Configuracion");    
   reader.ReadStartElement("IP");
   txtIpAddress.Text = reader.ReadString();
   reader.ReadEndElement();
   reader.ReadStartElement("USUARIO");     
   txtUser.Text = reader.ReadString();
   reader.ReadEndElement();
   reader.ReadStartElement("CONTRASENA");     
   txtPassword.Text = reader.ReadString();
   reader.ReadEndElement();
   reader.ReadStartElement("BASEDATOS");     
   txtDataBase.Text = reader.ReadString();
     reader.ReadEndElement();
   reader.ReadEndElement();
   reader.ReadStartElement("FECHA");
   lblPor.Visible=true;
   lblCopyrigth.Text = reader.ReadString();
   reader.ReadEndElement();   
  reader.ReadEndElement();
 }
        }
        catch (FileLoadException ex)
        {
            MessageBox.Show("Error  al obtener datos del archivo xml de respaldo: " + ex.Message);
        }
}
Aquí tenemos una imágen del archivo XML creado. Listo, con esto concluimos la primera entrega de mi bog, espero que a alguien le sea útil este código, la próxima entrega será algo fácil, validar los caracteres que teclee el usuario en los campos de un formulario en C#.

Comentarios

Populares

Un Juego de Dados en Java con Random e ImageIcon mediante NetBeans

Validación de Campos con C#

Como Definir un Metamodelo con Eclipse Modeling Framework (EMF). Domain Specific Language (DSL)

¿Cómo nombra la Fundación Eclipse a las versiones del IDE Eclipse?