Trabajando Con XML en MonoDevelop Con C#
Trabajando Con XML en MonoDevelop Con C#
Introduccin
XML es un metalenguaje de etiquetas usado para construir otros lenguajes, basado en un conjunto de reglas generales para describir datos estructurados en un formato basado en texto, siendo auto descriptivo y flexible significa que cada dato puede ser descrito con una etiqueta XML y anidado junto a otras etiquetas XML de una forma jerrquica permitiendo extenderlo separando el contenido de la presentacin. Ser un estndar abierto, la facilidad para crear documentos , el diseo formal y conciso, la variedad de aplicaciones que lo soportan y la independencia de la plataforma lo convierte en el formato universal para intercambiar informacin entre diferentes sistemas, por eso la compatibilidad es razn principal de XML. Cumpliendo con los estndares desarrollados por el W3C, XML es parte importante del desarrollo de aplicaciones en .NET al utilizarse dentro del Framework para archivos de configuracin, generar documentacin, polticas de seguridad, protocolos de comunicacin, persistencia de datos, servicios Web y serializacin de objetos entre muchas otros usos.
los cuales deben de ser agregados como referencias en MonoDevelop segn la funcionalidad requerida por cada proyecto. Las clases dentro de estos ensamblados cumplen con los estndares definidos por la W3C http://www.w3.org , por lo que proporcionan una solucin compatible y estndar.
En este documento mostraremos la aplicacin de las clases XmlTextWriter, XmlTextReader y XmlDocument las cuales son equivalentes a las tecnologas usadas para trabajar con XML, XmlTextWriter y XmlTextReader corresponden a Simple API for XML (SAX) y XmLDocument corresponden a Document Object Model (DOM).
Empezaremos creando una solucin GTK#, seleccionamos la opcin Nueva Solucin abajo del men Archivo en la ventana principal de MonoDevelop, como se ilustra en la siguiente imagen: Img1.png La ventana principal de MonoDevelop
Despus nos aparecern varias ventanas preguntndonos acerca de la versin de GTK# en todas ellas elegimos las opciones predeterminadas, que no sern utilizadas durante la solucin. En el panel de solucin de MonoDevelop tendremos la clase MainWindow que sera nuestro formulario principal, en ese mismo panel usaremos los controles GTK# para construir la pantalla de la aplicacin. Arrastramos los controles al formulario para que el formulario tenga una apariencia como la que se muestra en la imagen.
Esta aplicacin es bsicamente un formulario que nos muestra si la conexin a una base de datos PostgreSQL es correcta o no y que utiliza un archivo XML para conservar la configuracin de los servidores.
Crea la declaracin XML Crea un comentario Crea el inicio de un elemento, equivalente a escribir la etiqueta de apertura. Crea el atributo del elemento. Crea el contenido entre las etiquetas de apertura y de cierre debe estar entre los mtodos WriteStartElementyWriteEndDocument Finaliza la creacin del documento.
WriteEndDocument
Flush Close
Escribe el contenido del buffer del flujo de datos. Cierra el flujo de datos.
El cdigo del mtodo para crear el archivo de configuracin de la aplicacin que demuestra el uso de la clase y que debemos de incluir dentro de nuestra clase principal es el siguiente:
voidSaveConfig(stringDBServer,stringDBUser,stringDBPassword,stringDBname,string DBport){ string[,]values={{"Server",DBServer},{"User",DBUser},{"Password",DBPassword}, {"DataBase",DBname},{"Port",DBport}}; FileStreamfs=newFileStream(ConfigName,FileMode.OpenOrCreate,FileAccess.ReadWrite); XmlTextWriterxw=newXmlTextWriter(fs,System.Text.Encoding.UTF8); xw.WriteStartDocument(); xw.WriteComment("ArchivodeconfiguracionDBPostgreSQL"); xw.WriteStartElement("Configuration"); xw.WriteStartElement("appSettings"); for(inti=0;i<5;i++){ xw.WriteStartElement(values[i,0]); xw.WriteAttributeString("value",values[i,1]); xw.WriteEndElement();} xw.WriteEndElement(); xw.WriteEndElement(); xw.WriteEndDocument(); xw.Flush(); fs.Close();}
Ahora debemos de llamar nuestro mtodo dentro del evento Click del botn Guardar Configuracin, para crear el mtodo del evento debemos hacerlo desde la ventana de las propiedades del botn como se muestra en la imagen.
Llamamos al mtodo anteriormente dentro del mtodo creado, para que al pulsar el botn guardemos los valores de la aplicacin. protectedvirtualvoidbtnGuardar_Click(objectsender,System.EventArgse) { SaveConfig(txtDBServer.Text,txtDBuser.Text,txtDBpassword.Text,txtDBname.Text, txtPuerto.Text); } Si todo va correctamente al ejecutar e ingresar los valores correspondientes y pulsar el botn guardar debemos tener el archivo de configuracin XML creado en la ubicacin donde monodevelop genera el ejecutable.
voidLoadConfig(){ XmlDocumentmyDoc=newXmlDocument(); myDoc.Load(ConfigName); XmlNoderootNode=myDoc.DocumentElement; XmlNodeappsettings=rootNode.FirstChild; XmlNodeListnodeList=appsettings.ChildNodes; foreach(XmlNodenodeinnodeList){ switch(node.Name) { case"Server": txtDBServer.Text=node.Attributes["value"].Value; break; case"User": txtDBuser.Text=node.Attributes["value"].Value; break; case"Password": txtDBpassword.Text=node.Attributes["value"].Value; break; case"DataBase": txtDBname.Text=node.Attributes["value"].Value; break; case"Port": txtPuerto.Text=node.Attributes["value"].Value; break; } } }
Representa un nodo nico en la estructura de rbol DOM Es la representacin del DOM W3C Especifica el primer hijo del nodo. Una coleccin de nodos hijos. Carga el documento XML en la memoria.
Antes de ejecutar los cambios hechos hasta ahora, debemos poner en el constructor de la clase MainWindow la condicin para llamar al mtodo LoadConfig(), el cdigo quedara de la siguiente manera. publicMainWindow():base(Gtk.WindowType.Toplevel) { Build(); if(System.IO.File.Exists("config.xml")) LoadConfig(); } Ahora construimos la aplicacin con el botn F8 y ejecutamos la aplicacin con el botn F5 y observaremos que en los controles del formulario aparecen los valores guardados en el archivo de configuracin.
Detenemos la aplicacin y escribimos el cdigo siguiente para el botn Probar conexin, de la misma forma que hicimos para el botn Guardar. protectedvirtualvoidBtnTestConnClick(objectsender,System.EventArgse) { stringstrCon=string.Format("Server={0};Port={1};User id={2};Password={3};Database={4}", txtDBServer.Text, txtPuerto.Text, txtDBuser.Text, txtDBpassword.Text, txtDBname.Text); Npgsql.NpgsqlConnectionconn=newNpgsqlConnection(strCon); try{ conn.Open(); if(conn.State==System.Data.ConnectionState.Open) using(DialogmessageBox=newMessageDialog(this, DialogFlags.DestroyWithParent, MessageType.Info, ButtonsType.Ok, "Conexinexitosa")){ messageBox.Run(); messageBox.Destroy(); } }catch(NpgsqlExceptionnex){ using(DialogmessageBox=newMessageDialog(this, DialogFlags.DestroyWithParent, MessageType.Info, ButtonsType.Ok, "Excepcin:"+nex.Message)){ messageBox.Run(); messageBox.Destroy(); } } finally{conn.Close();} } Ejecutamos de nuevo la aplicacin, ingresamos los parmetros de conexin de un servidor PostgreSQL si todo es correcto y la aplicacin se conecto con xito nos enviar el siguiente mensaje.
Caso contrario nos enviar un mensaje de excepcin. segn el parmetro incorrecto. Img6.png Excepcin de la aplicacin
CONCLUSIN
En esta parte mostramos como trabajar documentos XML con Monodevelop, en resumen XmlTextWriter implementa (SAX) para escritura de XML y la clase XmlDocument implementa DOM.
las clases
Esperando que este material haya sido de utilidad en una segunda parte, mostraremos la lectura de un documento XML utilizando la clase XmlTextReader.. Los ejemplos pueden ser descargados de http://www.humansharp.com/ Este documento est protegido bajo la licencia de documentacin libre Free Documentacion License del Proyecto GNU, para consulta ver el sitio http://www.gnu.org/licenses/fdl.txt , toda persona que lo desee est autorizada a usar, copiar y modificar este documento segn los puntos establecidos en la Licencia FDL