************************************************* * * * Visual C# tips&tricks * * * * lavorare con i file XmL * * * ************************************************* zogs - zogs@anche.no - http://www.autistici.org/c0de Esempio per cercare e sommare delle cifre double(0.0) in un file.xml eseguendo la ricerca tramite data. come esempio il file.xml e' composto come segue: ******************** file.xml ******* 20101223 12,92 20010101 22,85 ******************* /file.xml ******* Il codice che segue e' da ritersi un esempio su come effettuare la ricerca, quindi non e' possibile compilarlo e ne eseguirlo se non vengono definite tutte le altre funzioni mancanti. Nelle TextBox che devono essere create la data verra' inserita nel modo dd/mm/yy nel codice seguente e' possibile notare come la data venga poi trasformata in yyyy/mm/dd per essere registrato nel file.xml. Questo metodo serve per eseguire le ricerche da data maggiore a data minore e viceversa. *************************************************************************************************************** XmlDocument ccXml; // funzione per caricare i file XML DateTime data_1_cc; // funzione per ricerca data 1 DateTime data_2_cc; // funzione per ricerca data 2 Label lblCalc_Search; // label per il calcolo/ricerca private const string path_xml = @"C:\Users\zogs\file.xml"; // path del file.xml evento calcolo da data a data: void calc_cc(object sender, EventArgs e) { // lavorare sulle date data_1_cc = new DateTime(); data_2_cc = new DateTime(); data_1_cc = DateTime.Parse(txtBData_1.Text); data_2_cc = DateTime.Parse(txtBData_2.Text); string sData_1= data_1_cc.ToString("yyyyMMdd"); string sData_2= data_2_cc.ToString("yyyyMMdd"); // caricare il file xml ccXml = new XmlDocument(); ccXml.Load(path_xml); // ricerca - stampa - somma da data a data XmlNodeList lista_nodi = ccXml.SelectNodes("/root/book[data>="+sData_1+" and data<="+sData_2+"]/importo"); double somma = 0.0; foreach (XmlNode node in lista_nodi) { /* // stampa cifra per cifra MessageBox.Show(node.InnerText); */ double inner = double.Parse(node.InnerText); somma += inner; //stampa il totale su MessageBox //MessageBox.Show((inner+somma).ToString()); // stampa il totale nella label lblCalc_Search.Text = ("€ "+(somma).ToString()); } } *************************************************************************************************************** Per qualsiasi chiarimento zogs@anche.no - Alessandro Muratore %00