A continuación inicio el apartado de Monografías por la extensión del tema que voy a tratar.

El objetivo del siguiente monográfico es intentar explicar algunos aspectos necesarios a la hora de interactuar aplicativos realizados con CSharp con ficheros XML.

Normalmente las necesidades que nos podemos encontrar a la hora de interactuar con ficheros (en este caso ficheros XML) son.

  • Comprobar si existen o no
    • NO existe el fichero
      • Crear el fichero en cuestión
      • Formatear el fichero
      • Estructura del fichero
    • SI existe el fichero
      • Obtener datos del fichero
      • Modificar datos existentes
      • Añadir datos nuevos
      • Borrar o eliminar datos

Comprobación de si existe un fichero o no

Lo realizaremos mediante el metodo file.exist del espacio de nombres System.IO

C#:

  1. span style="color: #808080;">"Path"))
  2. {
  3. MessageBox.Show("El fichero existe""El fichero no existe");
  4. }

Es muy importante definir bien el tipo de fichero que queramos crear, pues posteriores modificaciones de la estructura, pueden ser traumáticas.

En este caso vamos a hacer un pequeño ejempolo con un sistema de gestión documental, en el que crearemos varios clientes, proyectos y en cada proyecto asignaremos la ruta de diferentes ficheros.

XML:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Clientes>
  3. <Cliente Cod="001" Nombre="Empresa Alfa, S.L.">
  4.   <Proyecto Cod="Prj001" Nombre="Proyecto 001">
  5.     <Ficheros>C:\Documents and Settings\sbo\Mis documentos\a.pdf</Ficheros>
  6.   </Proyecto>
  7.   <Proyecto Cod="Prj002" Nombre="Proyecto 002">
  8.     <Ficheros>C:/Documents and Settings/sbo/Mis documentos/xxx.pdf</Ficheros>
  9.   </Proyecto>
  10.   <Proyecto Cod="Prj003" Nombre="Proyecto 003">
  11.     <Ficheros>C:/Documents and Settings/sbo/Mis documentos/xxx.pdf</Ficheros>
  12.   </Proyecto>
  13. </Cliente>
  14. <Cliente Cod="002" Nombre="Empresa Beta,S.A.">
  15.   <Proyecto Cod="Prj004" Nombre="Proyecto 004">
  16.     <Ficheros>C:\Documents and Settings\sbo\Mis documentos\a.pdf</Ficheros>
  17.   </Proyecto>
  18.   <Proyecto Cod="Prj005" Nombre="Proyecto 005">
  19.     <Ficheros>C:/Documents and Settings/sbo/Mis documentos/xxx.pdf</Ficheros>
  20.   </Proyecto>
  21.   <Proyecto Cod="Prj006" Nombre="Proyecto 006">
  22.     <Ficheros>C:/Documents and Settings/sbo/Mis documentos/xxx.pdf</Ficheros>
  23.   </Proyecto>
  24. </Cliente>
  25. <Cliente Cod="003" Nombre="Sociedad Gamma">
  26.   <Proyecto Cod="Prj007" Nombre="Proyecto 007">
  27.     <Ficheros>C:\Documents and Settings\sbo\Mis documentos\a.pdf</Ficheros>
  28.   </Proyecto>
  29.   <Proyecto Cod="Prj008" Nombre="Proyecto 008">
  30.     <Ficheros>C:/Documents and Settings/sbo/Mis documentos/xxx.pdf</Ficheros>
  31.   </Proyecto>
  32.   <Proyecto Cod="Prj009" Nombre="Proyecto 009">
  33.     <Ficheros>C:/Documents and Settings/sbo/Mis documentos/xxx.pdf</Ficheros>
  34.   </Proyecto>
  35. </Cliente>
  36. </Clientes>

NECESIDADES

En función de los valores que tengamos almacenados en nuestro fichero, es prácticamente seguro que no sepamos con exactitud el contenido de los mismos, por lo que podemos realizar una búsqueda por aproximación.

¿Cómo buscar, localizar y encontrar un valor?

Mediante el comando CONTAINS

El formato sería parecido a  el siguiente:

C#:

  1.  

Casi mejor será verlo en un ejemplo práctico.

supongamos que queremos buscar el fichero "xxx.pdf"

C#:

  1. span style="color: #808080;">"Ficheros""xxx.pdf""Texto encontrado");
  2.          MessageBox.Show("El texto se encuentra en :""-"

¿Cómo recorrer los diferentes nodos y valores?

El siguiente código nos permite iterar por los diferentes nodos y valores, recorriendo ordenadamente desde un nodo hasta todos sus subnodos. Una vez finaliza uno nodo, continuaría con el siguiente hasta finalizar el fichero. El ejemplo está referido al fichero XML de arriba.

C#:

  1. span style="color: #008080; font-style: italic;">//ATENCIÓN, NODO2 lo toma como el primer subnodo
  2.