Ciao,
io per un discorso di robustezza dell'applicazione ti consiglio di crearti delle classi serializzabili invece che usare un xml document.
Ti riporto un esempio di una classe che rappresenta l'xml da te postato:
[Serializable, System.Xml.Serialization.XmlRoot("miofile")]
public class MioFile
{
string _Nome;
string _Cognome;
string _DataNascita;
[System.Xml.Serialization.XmlElement("nome")]
public string Nome
{
get { return _Nome; }
set { _Nome = value; }
}
[System.Xml.Serialization.XmlElement("cognome")]
public string Cognome
{
get { return _Cognome; }
set { _Cognome = value; }
}
[System.Xml.Serialization.XmlElement("datanascita")]
public string DataNascita
{
get { return _DataNascita; }
set { _DataNascita = value; }
}
}
Come puoi vedere con l'attributo "XmlElement" puoi definire il nome dell'elemento che verrà generato. Il parametro DataNascita l'ho volutamente lasciato come stringa perchè ho visto che la data la riporti nel formato italiano. Se lo trasformi in datetime la data verrà serializzata in xml secondo lo standard ISO.
Poi puoi decidere di:
- utilizzare direttamente le classi come parametri del webservice
Ad esempio [WebMethod]
public bool ProvaFile(MioFile par)
{
//codice
}
- uppure utilizzare dei parametri stringa che conterranno l'xml della classe serializzata
[WebMethod]
public bool ProvaFile(string classXML)
{
//codice
}
Nel secondo caso dovrai usare le funzioni per la serializzazione/deserializzazione xml e gestire bene le varie casistiche di errore (potrebbero ad esempio passarti una stringa non valida).
Ti giro un paio di link utili sulla serializzazione
http://support.microsoft.com/default.aspx/kb/316730 (VB.Net)
http://support.microsoft.com/default.aspx/kb/815813 (C#)
Io ho postato gli esempi in c# non sapendo che linguaggio usi. Se serve ti converto il tutto in VB.Net
PS: la soluzione delle stringhe può essere adottata anche nel caso in cui tu voglia usare un xmldocument. Basta che all'interno del webmethod crei un xmldocument e carichi la stringa xml che ti è stata passata. Ovviamente dovrai gestire tutti i possibili errori (stringa vuota, contenuto errato ecc.)
Io preferisco sempre tipizzare il più possibile i webmethod però molto dipende dalle tue esigenze.
Se ci sai dire da chi e come verrà utilizzato il webservice (WinApp .net, applicazione Java ecc) magari riusciamo a definire meglio quale sia la strada migliore da seguire.