Ciao a tutti ... ho un problemino ...

Scenario: ho un file XML che rappresenta una semplice banca-dati per gestire una mailing list.

Il file è così composto, con un elemento root (lista) e un numero arbitrario di figli (indirizzo) con i relativi nodi . . . ne riporto una sezione con pochi elementi:
codice:
<lista>
  <indirizzo>
    <codice>3kdEFns9</codice>
    <nominativo>Michele Ziparo</nominativo>
    <email>mikezip@gmail.com</email>
    <data_iscrizione>15/06/2009</data_iscrizione>
    <confermato>Si</confermato>
  </indirizzo>
  <indirizzo>
    <codice>8dEfCer7</codice>
    <nominativo>Federico Rondinelli</nominativo>
    <email>f.rondilelli@fm626.it</email>
    <data_iscrizione>14/05/2009</data_iscrizione>
    <confermato>Si</confermato>
  </indirizzo>
  <indirizzo>
    <codice>2adnf3dD</codice>
    <nominativo>Andrea Greco</nominativo>
    <email>andrea@greco.it</email>
    <data_iscrizione>16/06/2009</data_iscrizione>
    <confermato>Si</confermato>
  </indirizzo>
  <indirizzo>
    <codice>2yOGj3rB</codice>
    <nominativo>Report Concorrere</nominativo>
    <email>report@concorrere.it</email>
    <data_iscrizione>16/06/2009</data_iscrizione>
    <confermato>Si</confermato>
  </indirizzo>
</lista>
Ora, tutto funziona tranquillamente, l'inserimento di nuovi indirizzi, l'aggiornamento dei nodi "confermato" . . . ecc ecc ecc . . . il mio problema nasce nel metodo che deve verificare se un indirizzo email è già presente.
Chiamo il metodo con questo codice:
codice:
bool presente = verifica_email_esistente(email);
            if (presente == false)
            {
                 }
            else
            {
                string message = "Questo indirizzo e-mail è già presente nell'elenco della mailing list!";
                ClientScript.RegisterStartupScript(typeof(Page), "alert", "<script language=JavaScript>alert('" + message + "');</script>");
                return;
            }
E questo è il codice che ho implementato per la verifica:
codice:
protected bool verifica_email_esistente(string email)
    {
        bool trovato = false;
        try
        {
            XmlDocument Doc = new XmlDocument();
            Doc.Load(Server.MapPath("mdb-database/mailing_list.xml"));
            XmlElement element = Doc.DocumentElement;
            string xpathExpr = "/lista/indirizzo/email[email='" + email + "']";
            XmlNode nodo = element.SelectSingleNode(xpathExpr);
            if (xpathExpr.Equals(email))
            {
                trovato = true;
                return trovato;
            }
        }
        catch (Exception)
        {
            
            throw;
        }
        return trovato;
    }
Ecco . . . questo sistema non funziona . . . perchè gli indirizzi vengono continuamente inseriti, come se la verifica risultasse costantemente "false" . . .
cosa può essere?!?