Oi tudo bem?
Estou com um problema para realizar as operações de crud com xml usando a linguagem c#.
Peguei num site da internet alguns códigos para realizar o crud, até aí tudo bem.
Codifiquei igual com o do site eu conseguia inserir, listar, mas quando eu pedi para excluir ele excluiu todo mundo menos o que eu tinha pedido, e quando eu fui ver, agora ele simplesmente não deixa nem inserir, fica mandando a mensagem “a sequencia não tem elementos”. O nome da exceção é InvallidOperationException. Eu simplesmente não estou entendendo nada.
Será que alguém pode me ajudar?
Isso é para um projeto da faculdade, é para entregar nessa sexta que vem.
Eu vou colocar aqui os códigos:
Código XML
<alarmes>
<alarme codigo="0" descricao="Acorde" dia="05" mes="03" horario="13" />
</alarmes>
Códigos C#
class RepositorioAlarme
{
public RepositorioAlarme()
{
}
public string verificarExistencia(int codigo)
{
string mensagem = "";
XElement x = new XElement("alarme");
XElement a = XElement.Load("Alarme.xml");
x = a.Elements().Where(p => p.Attribute("codigo").Value.Equals(codigo.ToString())).First();
foreach (XElement b in a.Elements())
{
if(x != null)
{
mensagem = "Alarme já cadastrado.";
}
}
return mensagem;
}
public void CadastrarAlarme(Alarme alarme)
{
XElement x = new XElement("alarme");
x.Add(new XAttribute("codigo",alarme.Codigo.ToString()));
x.Add(new XAttribute("descricao", alarme.Descricao));
x.Add(new XAttribute("dia", alarme.Dia));
x.Add(new XAttribute("mes", alarme.Mes));
x.Add(new XAttribute("horario", alarme.Horario));
XElement xml = XElement.Load("Alarme.xml");
xml.Add(x);
xml.Save("Alarme.xml");
}
public void AlterarAlarme(Alarme alarme)
{
XElement a = new XElement("alarme");
XElement x = XElement.Load("Alarme.xml");
XElement xml = x.Elements().Where(p=> p.Attribute("codigo").Value.Equals(alarme.Codigo.ToString())).First();
if (xml != null)
{
xml.Attribute("descricao").SetValue(alarme.Descricao);
xml.Attribute("dia").SetValue(alarme.Dia);
xml.Attribute("mes").SetValue(alarme.Mes);
xml.Attribute("horario").SetValue(alarme.Horario);
}
xml.Save("Alarme.xml");
}
public void ExcluirAlarme(Alarme alarme)
{
XElement x = XElement.Load("Alarme.xml");
XElement xml = x.Elements().Where(p => p.Attribute("codigo").Value.Equals(alarme.Codigo.ToString())).First();
if (xml != null)
{
xml.Remove();
}
xml.Save("Alarme.xml");
}
public List<Alarme> listarAlarmes(string consulta, string campo)
{
List<Alarme> alarmes = new List<Alarme>();
XElement xml = XElement.Load("Alarme.xml");
Alarme alarme = null;
if (consulta.Equals("todos") && campo.Equals("todos"))
{
foreach (XElement x in xml.Elements())
{
alarme = new Alarme();
alarme.Codigo = int.Parse(x.Attribute("codigo").Value);
alarme.Descricao = x.Attribute("descricao").Value;
alarme.Dia = x.Attribute("dia").Value;
alarme.Mes = x.Attribute("mes").Value;
alarme.Horario = x.Attribute("horario").Value;
alarmes.Add(alarme);
}
}
else
{
if (campo.Equals("codigo"))
{
XElement x = xml.Elements().Where(p => p.Attribute("codigo").Value.Equals(consulta)).First();
if (x != null)
{
foreach (XElement a in xml.Elements())
{
alarme = new Alarme();
alarme.Codigo = int.Parse(a.Attribute("codigo").Value);
alarme.Descricao = a.Attribute("descricao").Value;
alarme.Dia = a.Attribute("dia").Value;
alarme.Mes = a.Attribute("mes").Value;
alarme.Horario = a.Attribute("horario").Value;
alarmes.Add(alarme);
break;
}
}
}
else
{
if (campo.Equals("descrição"))
{
XElement x = xml.Elements().Where(p => p.Attribute("descricao").Value.Equals(consulta)).First();
foreach (XElement a in xml.Elements())
{
alarme = new Alarme();
alarme.Codigo = int.Parse(a.Attribute("codigo").Value);
alarme.Descricao = a.Attribute("descricao").Value;
alarme.Dia = a.Attribute("dia").Value;
alarme.Mes = a.Attribute("mes").Value;
alarme.Horario = a.Attribute("horario").Value;
alarmes.Add(alarme);
break;
}
}
else
{
if (campo.Equals("dia"))
{
XElement x = xml.Elements().Where(p => p.Attribute("dia").Value.Equals(consulta)).First();
foreach (XElement a in xml.Elements())
{
alarme = new Alarme();
alarme.Codigo = int.Parse(a.Attribute("codigo").Value);
alarme.Descricao = a.Attribute("descricao").Value;
alarme.Dia = a.Attribute("dia").Value;
alarme.Mes = a.Attribute("mes").Value;
alarme.Horario = a.Attribute("horario").Value;
alarmes.Add(alarme);
break;
}
}
else
{
if (campo.Equals("diaMesHorario"))
{
XElement x = xml.Elements().Where(p => p.Attribute("dia").Value.Equals(consulta)).First();
XElement f = xml.Elements().Where(p => p.Attribute("mes").Value.Equals(consulta)).First();
XElement g = xml.Elements().Where(p => p.Attribute("horario").Value.Equals(consulta)).First();
if (x != null || f != null || g != null)
{
foreach (XElement a in xml.Elements())
{
alarme = new Alarme();
alarme.Codigo = int.Parse(a.Attribute("codigo").Value);
alarme.Descricao = a.Attribute("descricao").Value;
alarme.Dia = a.Attribute("dia").Value;
alarme.Mes = a.Attribute("mes").Value;
alarme.Horario = a.Attribute("horario").Value;
alarmes.Add(alarme);
break;
}
}
}
}
}
}
}
return alarmes;
}
public Alarme pegarAlarme(int codigo)
{
Alarme alarme = null;
XElement a = XElement.Load("Alarme.xml");
XElement x = a.Elements().Where(p => p.Attribute("codigo").Value.Equals(codigo.ToString())).First();
if (x != null)
{
alarme = new Alarme();
alarme.Codigo = int.Parse(x.Attribute("codigo").Value);
alarme.Descricao = x.Attribute("descricao").Value;
alarme.Dia = x.Attribute("dia").Value;
alarme.Mes = x.Attribute("mes").Value;
alarme.Horario = x.Attribute("horario").Value;
}
return alarme;
}
}
}