private static PartialDataTable ParsePartialDataTable(ref XPathNodeIterator xPathIter) { PartialDataTable partialDataTable = new PartialDataTable(); int.TryParse(xPathIter.Current?.GetAttribute("total", xPathIter.Current.NamespaceURI), out int total); Guid.TryParse(xPathIter.Current?.GetAttribute("resultId", xPathIter.Current.NamespaceURI), out Guid resultId); System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo(xPathIter.Current?.GetAttribute("cultureinfo", xPathIter.Current.NamespaceURI)); partialDataTable.Locale = cultureInfo; partialDataTable.Total = total; partialDataTable.ResultId = resultId; if (xPathIter.Current != null && xPathIter.Current.MoveToFirstChild()) { XPathNodeIterator xPathIterC = xPathIter.Clone(); if (xPathIterC.Current != null && xPathIterC.Current.MoveToFirstChild()) { do { partialDataTable.Columns.Add( xPathIterC.Current.GetAttribute("name", xPathIterC.Current.NamespaceURI), Service.LoadTypeFromDomain( AppDomain.CurrentDomain, xPathIterC.Current.GetAttribute("type", xPathIterC.Current.NamespaceURI) ) ); } while (xPathIterC.Current.MoveToNext()); } } if (xPathIter.Current != null && xPathIter.Current.MoveToNext()) { XPathNodeIterator xPathIterR = xPathIter.Clone(); if (xPathIterR.Current != null && xPathIterR.Current.MoveToFirstChild()) { do { DataRow dR = partialDataTable.NewRow(); XPathNodeIterator xPathIterRr = xPathIterR.Clone(); if (xPathIterRr.Current != null && xPathIterRr.Current.MoveToFirstChild()) { do { string name = xPathIterRr.Current.GetAttribute("name", xPathIterRr.Current.NamespaceURI); if (name == null) { continue; } dR[name] = xPathIterRr.Current.Value.ToString(cultureInfo); } while (xPathIterRr.Current.MoveToNext()); } partialDataTable.Rows.Add(dR); } while (xPathIterR.Current != null && xPathIterR.Current.MoveToNext()); } } if (xPathIter.Current == null || !xPathIter.Current.MoveToNext()) { return(partialDataTable); } XPathNodeIterator xPathIterE = xPathIter.Clone(); string messageType = xPathIterE.Current?.GetAttribute("messagetype", xPathIterE.Current.NamespaceURI); if (string.IsNullOrEmpty(messageType)) { messageType = Message.Types.Error.ToString(); } partialDataTable.Message = new Message( xPathIterE.Current?.Value.ToString(cultureInfo), (Message.Types)System.Enum.Parse(typeof(Message.Types), messageType) ); return(partialDataTable); }
private static PartialDataTable ParsePartialDataTable(ref XPathNodeIterator xPathIter) { PartialDataTable partialDataTable = new PartialDataTable(); int Total = 0; int.TryParse(xPathIter.Current.GetAttribute("total", xPathIter.Current.NamespaceURI), out Total); System.Globalization.CultureInfo CultureInfo = new System.Globalization.CultureInfo(xPathIter.Current.GetAttribute("cultureinfo", xPathIter.Current.NamespaceURI)); partialDataTable.Locale = CultureInfo; partialDataTable.Total = Total; if (xPathIter.Current.MoveToFirstChild()) { XPathNodeIterator xPathIter_C = xPathIter.Clone(); if (xPathIter_C.Current.MoveToFirstChild()) { do { partialDataTable.Columns.Add( xPathIter_C.Current.GetAttribute("name", xPathIter_C.Current.NamespaceURI), Service.LoadTypeFromDomain( AppDomain.CurrentDomain, xPathIter_C.Current.GetAttribute("type", xPathIter_C.Current.NamespaceURI) ) ); } while (xPathIter_C.Current.MoveToNext()); } } if (xPathIter.Current.MoveToNext()) { XPathNodeIterator xPathIter_R = xPathIter.Clone(); if (xPathIter_R.Current.MoveToFirstChild()) { XPathNodeIterator xPathIter_RR; DataRow tDR; do { tDR = partialDataTable.NewRow(); xPathIter_RR = xPathIter_R.Clone(); if (xPathIter_RR.Current.MoveToFirstChild()) { do { tDR[xPathIter_RR.Current.GetAttribute("name", xPathIter_RR.Current.NamespaceURI)] = xPathIter_RR.Current.Value.ToString(CultureInfo); } while (xPathIter_RR.Current.MoveToNext()); } partialDataTable.Rows.Add(tDR); } while (xPathIter_R.Current.MoveToNext()); } } if (xPathIter.Current.MoveToNext()) { XPathNodeIterator xPathIter_E = xPathIter.Clone(); partialDataTable.Message = new Message( xPathIter_E.Current.Value.ToString(CultureInfo), (Message.Types)System.Enum.Parse( typeof(Message.Types), xPathIter_E.Current.GetAttribute("messagetype", xPathIter_E.Current.NamespaceURI) ) ); } return(partialDataTable); }