Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }