private void DoValidateXML(object obj) { try { if (!File.Exists(XSD_PATH)) { MessageBox.Show("XSD File Not Found !"); return; } if (File.Exists(XmlPath)) { try { VerifyXML(XmlPath); } catch (Exception ex) { AppErrorBox.ShowErrorMessage("Error While Verifying XML . .", ex.ToString()); } try { using (var reader = new XmlTextReader(XmlPath)) { XmlSerializer serializer = new XmlSerializer(typeof(xsd.RXNFILE)); xsd.RXNFILE rxnFile = (xsd.RXNFILE)serializer.Deserialize(reader); CollectSummary(rxnFile); } } catch (Exception ex) { AppErrorBox.ShowErrorMessage("Error While Collecting Information From XML . .", ex.ToString()); } } else { MessageBox.Show("XML File Path Is Not Valid . ."); } } catch (Exception ex) { Log.This(ex); } }
private void CollectSummary(xsd.RXNFILE rxnFile) { try { int rxnsCount = 0; S8000Chemicals = 0; List <ValidateRSDVM> rsdData = new List <ValidateRSDVM>(); CommentsUnicodeErrors = new ObservableCollection <UnicodeErrorVM>(); RSNUnicodeErrors = new ObservableCollection <UnicodeErrorVM>(); S8000UnicodeErrors = new ObservableCollection <UnicodeErrorVM>(); if (rxnFile.DOCUMENT != null) { TotalTans = rxnFile.DOCUMENT.Count(); foreach (var tan in rxnFile.DOCUMENT) { if (tan.RXNGRP != null) { if (tan.RXNGRP.RXN != null) { rxnsCount += tan.RXNGRP.RXN.Count(); foreach (var rxn in tan.RXNGRP.RXN) { #region 8000 Chemical Name Unicode Check if (rxn.SUBDESC != null && rxn.SUBDESC.SUBDEFN != null) { S8000Chemicals += rxn.SUBDESC.SUBDEFN.Length; foreach (var s8000Definition in rxn.SUBDESC.SUBDEFN) { if (CharUtils.NotAValidUniCodeString(s8000Definition.SUBNAME)) { S8000UnicodeErrors.Add(new UnicodeErrorVM { TanNumber = tan.TAN, Num = s8000Definition.NRNNUM, Seq = rxn.RXNID.RXNSEQ, SubstanceName = s8000Definition.SUBNAME }); } } } #endregion if (rxn.RXNPROCESS.RSN != null) { foreach (var rsn in rxn.RXNPROCESS.RSN) { if (CharUtils.NotAValidUniCodeString(rsn.Value)) { RSNUnicodeErrors.Add(new UnicodeErrorVM { TanNumber = tan.TAN, RXN = rxn.NO, Seq = rxn.RXNID.RXNSEQ, Comments = rsn.Value }); } } } #region RSD Data rsdData.Add(new ValidateRSDVM { ProductNo = rxn.RXNID.RXNNUM, RSD = rxn.RSD, RsdLength = rxn.RSD.Length, RxnNo = rxn.NO, Semicolumns = rxn.RSD.Split(';').Length - 1, Sequence = rxn.RXNID.RXNSEQ, Stages = rxn.RXNPROCESS.STAGE.Count(), TanNumber = tan.TAN }); #endregion } } } if (!String.IsNullOrEmpty(tan.COMMENTS) && CharUtils.NotAValidUniCodeString(tan.COMMENTS)) { CommentsUnicodeErrors.Add(new UnicodeErrorVM { TanNumber = tan.TAN, Comments = tan.COMMENTS }); } } } var sortedRSDs = rsdData.OrderByDescending(r => r.RsdLength); RSDResult = new ObservableCollection <ValidateRSDVM>(sortedRSDs); MaxRSDLength = sortedRSDs.FirstOrDefault()?.RsdLength; TotalRXNs = rxnsCount; } catch (Exception ex) { Log.This(ex); } }