0% encontró este documento útil (0 votos)
809 vistas8 páginas

Trabajando Con XML en MonoDevelop Con C#

Este documento explica cómo trabajar con XML en MonoDevelop, incluyendo la creación de archivos XML usando XmlTextWriter, la lectura de archivos XML usando XmlDocument, y proporciona ejemplos de código para estas tareas.

Cargado por

Martin Marquez
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
809 vistas8 páginas

Trabajando Con XML en MonoDevelop Con C#

Este documento explica cómo trabajar con XML en MonoDevelop, incluyendo la creación de archivos XML usando XmlTextWriter, la lectura de archivos XML usando XmlDocument, y proporciona ejemplos de código para estas tareas.

Cargado por

Martin Marquez
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 8

Entendiendo XML con MonoDevelop (I)

I.S. Martn Mrquez <[email protected]>

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.

Trabajando XML con MonoDevelop


Antes de empezar a trabajar debemos tener instalada y configurada la ltima versin de la herramienta de desarrollo MonoDevelop http://monodevelop.com/ y la versin 2.4 o superior de GTK#. Mono proporciona clases especialmente diseadas para crear, buscar, analizar y transformar documentos XML, estas clases estn agrupadas en los siguientes ensamblados: System.Xml System.Xml.Schema System.Xml.Serialization System.Xml.XPath System.Xml.Xsl Contiene las clases principales para analizar y manipular documentos o flujos XML. Soporte para esquemas XSD (XML Schema Definition Language) El soporte para persistir y restaurar objectos en y desde documentos XML. Soporte para las expresiones y evaluaciones XPATH. Soporte para transformaciones XSLT.

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.

Img2.png mostrando el formulario principal dentro de monodevolop y el toolbox

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.

Creando un archivo XML


Como sabemos, los archivos XML son documentos de texto que contienen etiquetas anidadas definidas por el creador del documento para darle significado al contenido del documento, al ser un documento de texto estructurado pueden usarse las clases para manejo de archivos (System.IO) y cadenas (System.Text) para su creacin y lectura, sin embargo esto no es una buena prctica ya que .NET proporciona clases con funcionalidades exclusivas para el tratamiento de documentos XML. La clase XmlTextWriter permite generar documentos XML bien formados de forma lineal, de una manera rpida al ser variante de la implantacin SAX de Java y de forma dinmica usando flujos o archivos sin necesidad de cargar el documento entero en la memoria, en este ejemplo usamos los siguientes mtodos para el archivo de configuracin.

WriteStartDocument WriteComment WriteStartElement WriteAttributeString WriteString

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.

Img3.png Creando el mtodo del evento

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.

Consultando un archivo XML


XmlDocument es la clase que en .NET implementa el Document Object Model (DOM) acorde con el estndar W3C. El DOM es una representacin de un documento XML completo utilizando una estructura jerrquica en forma de un rbol de nodos que se carga en memoria y que permite navegar a travs de sus elementos, realizar bsquedas de forma no lineal, modificar su estructura, editar, eliminar y agregar elementos. XmlDocument representa el documento XML como coleccin de clases, una de sus principales ventajas es que puede cargar desde el disco el documento completo en memoria lo cual es una buena opcin si se necesita realizar varias operaciones en el documento como buscar, editar, validar o transformar, la desventaja es que al estar el documento entero contenido en memoria la cantidad de memoria que necesite la aplicacin depender de la cantidad de informacin que posea el documento XML. El cdigo del mtodo que demuestra el uso de la clase XmlDocument y que utilizaremos para consultar los parmetros guardados desde el documento XML de configuracin de la aplicacin es el siguiente:

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; } } }

XmlNode DocumentElement FirstChild ChildNodes XmlDocument.Load

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.

Img4.png ejecutando la aplicacin

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.

Img5.png Mensaje de xito

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

También podría gustarte