Mantenimiento de Usuarios en XML con C#: Alta, Baja, Consulta y Modificación
Mantenimiento de usuarios en XML con C#
A continuación se muestra el código de una clase MantenimientoXML que implementa las operaciones básicas de gestión de usuarios (alta, baja, consulta y modificación) sobre un documento XML, junto con una prueba unitaria.
Búsqueda del usuario con LINQ to XML
var usuarioxml = (from usu in datos.DocumentoXML.Elements("Usuarios").Elements("Usuario")
where usu.Attribute("Clave").Value.Equals(clave)
select usu).SingleOrDefault();Clase MantenimientoXML
public class MantenimientoXML : IMantenimiento
{
private ProcesosXML _procesos;
public MantenimientoXML(string filename)
{
_procesos = new ProcesosXML(filename);
}
public IProcesos Proceso
{
get { return Proceso; }
set { _procesos = value as ProcesosXML; }
}
public bool Alta(IElemento elemento)
{
DataSourceXML datos = _procesos.Datos as DataSourceXML;
// Compruebo si existe el usuario
if (usuarioxml != null)
return false;
Usuario nuevo = elemento as Usuario;
XElement nuevoUsu = new XElement("Usuario",
new XAttribute("Clave", nuevo.Clave),
new XElement("Nombre", nuevo.Nombre),
new XElement("Edad", nuevo.Edad));
var usuarios = (from usu in datos.DocumentoXML.Elements("Usuarios")
select usu).SingleOrDefault();
usuarios.Add(nuevoUsu);
datos.GuardarDatos();
return true;
}
public bool Baja(string clave)
{
DataSourceXML datos = _procesos.Datos as DataSourceXML;
// Compruebo si existe el usuario
if (usuarioxml == null)
return false;
usuarioxml.Remove();
datos.GuardarDatos();
return true;
}
Consulta de un usuario
public IElemento Consulta(string clave)
{
DataSourceXML datos = _procesos.Datos as DataSourceXML;
// Compruebo si existe el usuario
if (usuarioxml == null)
return null;
string nombre = usuarioxml.Element("Nombre").Value;
int edad = Int32.Parse(usuarioxml.Element("Edad").Value);
IElemento elemento = new Usuario(clave, nombre, edad);
return elemento;
}
public bool Modificacion(IElemento elemento)
{
DataSourceXML datos = _procesos.Datos as DataSourceXML;
// Compruebo si existe el usuario
if (usuarioxml == null)
return false;
Usuario usuario = elemento as Usuario;
usuarioxml.SetElementValue("Nombre", usuario.Nombre);
usuarioxml.SetElementValue("Edad", usuario.Edad);
datos.GuardarDatos();
return true;
}
}
Prueba unitaria
[TestMethod]
public void BajaUsuarioTest()
{
IMantenimiento datos = new MantenimientoXML("Usuarios.xml");
Assert.IsTrue(datos.Baja("1234J"));
}