private void buGet_Click(object sender, EventArgs e) { // если список пуст - ничего не делай if (dataSets.Count == 0) { return; } try { for (int i = dataSets.Count - 1; i >= 0; i--) // Проходимся по списку в обратном порядке, чтобы можно было без проблем удалять строки { DataSet ds = dataSets[i]; string filename1, filename2, filename3, filename4, filename5; // Создаем xml filename1 = createXml(ds); // Подписываем filename2 = signXml(filename1); // Шифруем filename3 = encryptXml(filename2); // Отправляем и получаем ответ filename4 = sendXml(filename3); // Расшифровываем ответ filename5 = decryptResponse(filename4); // Получаем объект ResultData rd = getResultDataFromXml(filename5); if (rd.STATUS == "1") // Если объект по датасету получен верно { // Засовываем результат в лист результатов resultDatas.Add(rd); } else // Не удалось получить объект по датасету { // Засовываем датасет в лист ошибочных датасетов для отображения ошибки dataSetsHasErrors.Add(ds); } // удаляем датасет из листа на проверку dataSets.Remove(ds); // удаляем временные файлы, если требуется if (DELETE_BUF_FILES) { if (File.Exists(filename1)) { File.Delete(filename1); } if (File.Exists(filename2)) { File.Delete(filename2); } if (File.Exists(filename3)) { File.Delete(filename3); } if (File.Exists(filename4)) { File.Delete(filename4); } if (File.Exists(filename5)) { File.Delete(filename5); } } } // перерисовываем элементы списка lb.Items.Clear(); foreach (DataSet d in dataSets) { lb.Items.Add(d); } // тут можно продолжить работать с resultDatas ========================================================== foreach (ResultData rd in resultDatas) { // do something } // вывод ошибочных датасетов if (dataSetsHasErrors.Count > 0) { string errorMsg = "Возникли ошибки при получении " + dataSetsHasErrors.Count + " датасетов:\r\n"; foreach (DataSet ds in dataSetsHasErrors) { errorMsg += ds.ToString() + "\r\n"; } MessageBox.Show(errorMsg, "GetElnList", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (IOException ex) { MessageBox.Show(ex.Message, "GetElnList", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Получает заполненный объект из расшифрованного ответа ФСС (просто парсит XML) /// </summary> /// <param name="filename">Путь к расшифрованному ответу ФСС</param> /// <returns>Объект</returns> public ResultData getResultDataFromXml(string filename) { ResultData res = new ResultData(); if (!File.Exists(filename)) { throw new Exception("Шаг 6. Файл не найден!\r\nПуть:" + filename); } // Создаем объект XmlDocument. XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(filename); res.STATUS = xmlDoc.DocumentElement.GetElementsByTagName("ns1:STATUS").Item(0).InnerText; if (res.STATUS == "1") { XmlElement row = (XmlElement)xmlDoc.DocumentElement.GetElementsByTagName("ns1:ROW").Item(0); res.BIRTHDAY = row.GetElementsByTagName("ns1:BIRTHDAY").Item(0).InnerText; res.BOZ_FLAG = row.GetElementsByTagName("ns1:BOZ_FLAG").Item(0).InnerText; res.DATE1 = row.GetElementsByTagName("ns1:DATE1").Item(0).InnerText; res.DATE2 = row.GetElementsByTagName("ns1:DATE2").Item(0).InnerText; res.DT1_LN = row.GetElementsByTagName("ns1:DT1_LN").Item(0).InnerText; res.DT2_LN = row.GetElementsByTagName("ns1:DT2_LN").Item(0).InnerText; res.DUPLICATE_FLAG = row.GetElementsByTagName("ns1:DUPLICATE_FLAG").Item(0).InnerText; res.EMPL_FLAG = row.GetElementsByTagName("ns1:EMPL_FLAG").Item(0).InnerText; res.FORM1_DT = row.GetElementsByTagName("ns1:FORM1_DT").Item(0).InnerText; res.GENDER = row.GetElementsByTagName("ns1:GENDER").Item(0).InnerText; res.HOSPITAL_DT1 = row.GetElementsByTagName("ns1:HOSPITAL_DT1").Item(0).InnerText; res.HOSPITAL_DT2 = row.GetElementsByTagName("ns1:HOSPITAL_DT2").Item(0).InnerText; res.INSUR_MM = row.GetElementsByTagName("ns1:INSUR_MM").Item(0).InnerText; res.INSUR_YY = row.GetElementsByTagName("ns1:INSUR_YY").Item(0).InnerText; res.LN_CODE = row.GetElementsByTagName("ns1:LN_CODE").Item(0).InnerText; res.LN_DATE = row.GetElementsByTagName("ns1:LN_DATE").Item(0).InnerText; res.LN_HASH = row.GetElementsByTagName("ns1:LN_HASH").Item(0).InnerText; res.LN_STATE = row.GetElementsByTagName("ns1:LN_STATE").Item(0).InnerText; res.LPU_ADDRESS = row.GetElementsByTagName("ns1:LPU_ADDRESS").Item(0).InnerText; res.LPU_EMPLOYER = row.GetElementsByTagName("ns1:LPU_EMPLOYER").Item(0).InnerText; res.LPU_EMPL_FLAG = row.GetElementsByTagName("ns1:LPU_EMPL_FLAG").Item(0).InnerText; res.LPU_NAME = row.GetElementsByTagName("ns1:LPU_NAME").Item(0).InnerText; res.LPU_OGRN = row.GetElementsByTagName("ns1:LPU_OGRN").Item(0).InnerText; res.MSE_DT1 = row.GetElementsByTagName("ns1:MSE_DT1").Item(0).InnerText; res.MSE_DT2 = row.GetElementsByTagName("ns1:MSE_DT2").Item(0).InnerText; res.MSE_DT3 = row.GetElementsByTagName("ns1:MSE_DT3").Item(0).InnerText; res.MSE_INVALID_GROUP = row.GetElementsByTagName("ns1:MSE_INVALID_GROUP").Item(0).InnerText; res.NAME = row.GetElementsByTagName("ns1:NAME").Item(0).InnerText; res.NOT_INSUR_MM = row.GetElementsByTagName("ns1:NOT_INSUR_MM").Item(0).InnerText; res.NOT_INSUR_YY = row.GetElementsByTagName("ns1:NOT_INSUR_YY").Item(0).InnerText; res.PATRONIMIC = row.GetElementsByTagName("ns1:PATRONIMIC").Item(0).InnerText; res.PREGN12W_FLAG = row.GetElementsByTagName("ns1:PREGN12W_FLAG").Item(0).InnerText; res.PRIMARY_FLAG = row.GetElementsByTagName("ns1:PRIMARY_FLAG").Item(0).InnerText; res.REASON1 = row.GetElementsByTagName("ns1:REASON1").Item(0).InnerText; res.RETURN_DATE_EMPL = row.GetElementsByTagName("ns1:RETURN_DATE_EMPL").Item(0).InnerText; res.SERV1_AGE = row.GetElementsByTagName("ns1:SERV1_AGE").Item(0).InnerText; res.SERV1_FIO = row.GetElementsByTagName("ns1:SERV1_FIO").Item(0).InnerText; res.SERV1_MM = row.GetElementsByTagName("ns1:SERV1_MM").Item(0).InnerText; res.SERV1_RELATION_CODE = row.GetElementsByTagName("ns1:SERV1_RELATION_CODE").Item(0).InnerText; res.SERV2_AGE = row.GetElementsByTagName("ns1:SERV2_AGE").Item(0).InnerText; res.SERV2_MM = row.GetElementsByTagName("ns1:SERV2_MM").Item(0).InnerText; res.SNILS = row.GetElementsByTagName("ns1:SNILS").Item(0).InnerText; res.SURNAME = row.GetElementsByTagName("ns1:SURNAME").Item(0).InnerText; res.treatPeriods = new List <TreatFullPeriod>(); XmlNodeList xnlTreatPeriods = row.GetElementsByTagName("ns1:TREAT_PERIODS"); TreatFullPeriod treatFullPeriod = null; for (int i = 0; i < xnlTreatPeriods.Count; i++) { treatFullPeriod = new TreatFullPeriod(); treatFullPeriod.treatPeriods = new List <TreatPeriod>(); XmlElement xeTreatFullPeriod = (XmlElement)xnlTreatPeriods.Item(i); XmlNodeList xnlTreatFullPeriods = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_FULL_PERIOD"); TreatPeriod treatPeriod = null; for (int j = 0; j < xnlTreatFullPeriods.Count; j++) { treatPeriod = new TreatPeriod(); XmlElement xeTreatPeriod = (XmlElement)xnlTreatFullPeriods.Item(i); treatPeriod.TREAT_DOCTOR = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_DOCTOR").Item(0).InnerText; treatPeriod.TREAT_DOCTOR_ROLE = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_DOCTOR_ROLE").Item(0).InnerText; treatPeriod.TREAT_DT1 = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_DT1").Item(0).InnerText; treatPeriod.TREAT_DT2 = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_DT2").Item(0).InnerText; } treatFullPeriod.treatPeriods.Add(treatPeriod); } res.treatPeriods.Add(treatFullPeriod); res.lnResult = new List <LnResult>(); XmlNodeList xnlLnResult = row.GetElementsByTagName("ns1:LN_RESULT"); LnResult lnResult = null; for (int i = 0; i < xnlLnResult.Count; i++) { lnResult = new LnResult(); XmlElement xeLnResult = (XmlElement)xnlLnResult.Item(i); lnResult.OTHER_STATE_DT = xeLnResult.GetElementsByTagName("ns1:OTHER_STATE_DT").Item(0).InnerText; lnResult.RETURN_DATE_LPU = xeLnResult.GetElementsByTagName("ns1:RETURN_DATE_LPU").Item(0).InnerText; } res.lnResult.Add(lnResult); } return(res); }