RISOLTO!!! 
l'errore era nella stringa dell'xpath
string xpathExpr = "/lista/indirizzo/email[email='" + email + "']";
Ora l'ho modificata in modo che la selezione avvenisse ricercando l'elemento "email" come nodo figlio di "indirizzo" ... e poi scegliendo il nodo stesso "email"
string xpathExpr = "/lista/indirizzo[email='" + email + "']/email";
Meno male ;)
---
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:
<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:
E questo è il codice che ho implementato per la verifica:
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?!?