viernes, 20 de junio de 2008

Cómo embeber un archivo XML en Visual C#

Agregar un archivo XML a un proyecto es fácil: basta con hacer botón derecho, Agregar, Nuevo elemento..., Archivo XML. Aparecerá un editor donde podemos rellenar nuestro propio archivo.

Leerlo es un poco más complicado. A diferencia de Qt, que utiliza un prefijo, aquí debemos realizar los siguientes pasos:
- En las propiedades del archivo, tenemos que cambiar la Acción de compilación a "Recurso incrustado" (embedded resource)
- También en las propiedades, debemos indicar un espacio de nombres (namespace), generalmente el mismo que utiliza nuestra aplicación. Dejamos la opción de copiar en "No copiar", ya que precisamente lo que queremos es un recurso incrustado, no archivos dando vueltas por el directorio de instalación.
- En el menú Proyecto, hacemos click en Agregar elemento existente..., cambiamos el tipo para que muestre todo tipo de archivos, y agregamos el XML que hemos creado. Este es el paso más tonto de todos.
- Lo leemos con la siguiente secuencia (como DOM), si el archivo se llama "archivo.xml":

Stream str = this.GetType().Assembly.GetManifestResourceStream( "espacio_de_nombres.archivo.xml" );
XmlDocument doc = new XmlDocument();
doc.Load(str);

Notas:
- Debemos resistir la tentación de hacer un .GetManifestResourceInfo("namespace.archivo.xml").Filename. Devuelve una cadena nula.

Más información:
http://support.microsoft.com/kb/324567/en-us/

No hay comentarios: