private void ReadLogXML(Stream stream)
        {
            String  sPort        = String.Empty;
            String  sName        = String.Empty;
            String  sAccion      = String.Empty;
            String  sError       = String.Empty;
            String  sIcon        = String.Empty;
            String  sDescripcion = String.Empty;
            String  sValor       = String.Empty;
            Boolean bTratar      = false;
            String  sResultado   = String.Empty;
            String  sSubAccion   = String.Empty;
            String  sSubIcon     = String.Empty;
            int     sNumChar     = 0;

            if (Xamarin.Forms.Device.Idiom == Xamarin.Forms.TargetIdiom.Tablet)
            {
                sNumChar = 58;
            }
            else
            {
                sNumChar = 23;
            }

            XmlReader          xReader       = XmlReader.Create(stream);
            List <DatosAccion> ListaDatos    = new List <DatosAccion>();
            List <DatosAccion> SubListaDatos = new List <DatosAccion>();
            List <ItemsLog>    SubItemLogs   = new List <ItemsLog>();

            while (xReader.Read())
            {
                if (xReader.Name == "Mtus")
                {
                    bTratar = true;
                }
                if (xReader.Name == "Error")
                {
                    bTratar = true;
                }
                if (bTratar)
                {
                    switch (xReader.NodeType)
                    {
                    case XmlNodeType.Element:
                        if (xReader.Name == "Action")
                        {
                            if (xReader.Depth == 2)
                            {
                                sAccion     = xReader.GetAttribute("display");
                                sIcon       = "logs_file_button";
                                ListaDatos  = new List <DatosAccion>();
                                SubItemLogs = new List <ItemsLog>();
                            }
                            else if (xReader.Depth == 3)
                            {
                                sSubAccion    = xReader.GetAttribute("display");
                                sSubIcon      = "logs_file_button";
                                SubListaDatos = new List <DatosAccion>();
                            }
                        }
                        if (xReader.Name == "AppError")
                        {
                            sAccion    = xReader.Name;
                            sIcon      = "error";
                            ListaDatos = new List <DatosAccion>();
                        }

                        if (String.IsNullOrEmpty(xReader.GetAttribute("display")))
                        {
                            sDescripcion = xReader.Name;
                        }
                        else
                        {
                            sDescripcion = xReader.GetAttribute("display");
                        }

                        if (xReader.Name == "Message")
                        {
                            sError = xReader.GetAttribute("ErrorId");
                        }

                        if (xReader.Name == "Port")
                        {
                            sPort = xReader.GetAttribute("display");
                        }

                        break;

                    case XmlNodeType.Text:
                        sValor = xReader.Value;
                        DatosAccion datosAccion = new DatosAccion();
                        if (!String.IsNullOrEmpty(sError) && sDescripcion == "Message")
                        {
                            datosAccion.Descripcion = String.Empty;     //$"{sError} :";
                        }
                        else if (String.IsNullOrEmpty(sPort))
                        {
                            datosAccion.Descripcion = $"{sDescripcion}:";
                        }
                        else
                        {
                            datosAccion.Descripcion = $" {sPort} {sDescripcion}:";
                        }

                        if (!String.IsNullOrEmpty(datosAccion.Descripcion))
                        {
                            datosAccion.Valor = sValor.Length > sNumChar ? $"{sValor.Substring(0, sNumChar)}..." : sValor;
                        }
                        else
                        {
                            datosAccion.Valor = sValor;
                        }

                        if (!string.IsNullOrEmpty(sSubAccion))
                        {
                            SubListaDatos.Add(datosAccion);
                        }
                        else
                        {
                            ListaDatos.Add(datosAccion);
                        }
                        // sResultado = String.Concat(sResultado, $" : {xReader.Value}");
                        //listBox1.Items.Add(xReader.Value);
                        break;

                    case XmlNodeType.EndElement:

                        if (xReader.Name == "Action")       // si acaba la accion
                        {
                            if (xReader.Depth == 2 && !String.IsNullOrEmpty(sAccion))
                            {
                                ItemsLog Item = new ItemsLog
                                {
                                    Accion = sAccion,
                                    Icon   = sIcon
                                };
                                Item.HayLista = true;


                                if (SubItemLogs.Count > 0)
                                {
                                    ItemsLog Item1 = new ItemsLog
                                    {
                                        Accion = sAccion,
                                        Icon   = sIcon
                                    };
                                    Item1.ListaDatos = ListaDatos;
                                    Item1.HeightList = Item1.ListaDatos.Count > 5 ? Item1.ListaDatos.Count * 20: 100;
                                    Item.SubItemsLog = new List <ItemsLog>();
                                    Item.SubItemsLog.Add(Item1);
                                    Item.SubItemsLog.AddRange(SubItemLogs);
                                    Item.HayLista = false;

                                    // Item.ListaDatos = null;
                                }
                                else
                                {
                                    Item.ListaDatos = ListaDatos;
                                    Item.HeightList = Item.ListaDatos.Count > 5?(Item.ListaDatos.Count * 20): 100;
                                }
                                ItemsLog.Add(Item);
                                sAccion = String.Empty;
                            }
                            else if (xReader.Depth == 3)
                            {
                                ItemsLog Item = new ItemsLog
                                {
                                    Accion = sSubAccion,
                                    Icon   = sSubIcon
                                };

                                Item.ListaDatos = SubListaDatos;
                                Item.HeightList = Item.ListaDatos.Count > 5 ? (Item.ListaDatos.Count * 20): 100;
                                SubItemLogs.Add(Item);
                                sSubAccion = String.Empty;
                            }
                        }
                        if (xReader.Name == "AppError")      // si acaba la accion
                        {
                            ItemsLog Item = new ItemsLog
                            {
                                Accion = $"Error {sError}",
                                Icon   = sIcon
                            };
                            Item.HayLista   = true;
                            Item.ListaDatos = ListaDatos;
                            Item.HeightList = 100;
                            ItemsLog.Add(Item);
                        }
                        if (xReader.Name == "Port")
                        {
                            sPort = String.Empty;
                        }
                        if (xReader.Name == "AppError")
                        {
                            sIcon  = String.Empty;
                            sError = String.Empty;
                        }
                        if (xReader.Name == "Mtus" || xReader.Name == "Error")
                        {
                            bTratar = false;
                        }
                        //sResultado = String.Concat(sResultado, Environment.NewLine);
                        //listBox1.Items.Add("");
                        break;
                    }
                }
            }
            ItemsLog ItemNull = new ItemsLog
            {
                Accion = String.Empty,
                Icon   = String.Empty
            };

            ItemsLog.Add(ItemNull);
            ItemsLog.Add(ItemNull);
            //  Application.Current.MainPage.DisplayAlert("XML", sResultado,"OK");
        }
示例#2
0
        private void OtroRead(Stream stream)
        {
            String  sPort        = String.Empty;
            String  sName        = String.Empty;
            String  sAccion      = String.Empty;
            String  sError       = String.Empty;
            String  sIcon        = String.Empty;
            String  sDescripcion = String.Empty;
            String  sValor       = String.Empty;
            Boolean bTratar      = false;
            String  sResultado   = String.Empty;
            String  sSubAccion   = String.Empty;
            String  sSubIcon     = String.Empty;


            XmlReader          xReader       = XmlReader.Create(stream);
            List <DatosAccion> ListaDatos    = new List <DatosAccion>();
            List <DatosAccion> SubListaDatos = new List <DatosAccion>();
            List <ItemsLog>    SubItemLogs   = new List <ItemsLog>();

            while (xReader.Read())
            {
                if (xReader.Name == "Mtus")
                {
                    bTratar = true;
                }
                if (xReader.Name == "Error")
                {
                    bTratar = true;
                }
                if (bTratar)
                {
                    switch (xReader.NodeType)
                    {
                    case XmlNodeType.Element:
                        if (xReader.Name == "Action")
                        {
                            if (xReader.Depth == 2)
                            {
                                sAccion     = xReader.GetAttribute("display");
                                sIcon       = "logs_file_button";
                                ListaDatos  = new List <DatosAccion>();
                                SubItemLogs = new List <ItemsLog>();
                            }
                            else if (xReader.Depth == 3)
                            {
                                sSubAccion    = xReader.GetAttribute("display");
                                sSubIcon      = "logs_file_button";
                                SubListaDatos = new List <DatosAccion>();
                            }
                        }
                        if (xReader.Name == "AppError")
                        {
                            sAccion    = xReader.Name;
                            sIcon      = "error";
                            ListaDatos = new List <DatosAccion>();
                        }

                        if (String.IsNullOrEmpty(xReader.GetAttribute("display")))
                        {
                            sDescripcion = xReader.Name;
                        }
                        else
                        {
                            sDescripcion = xReader.GetAttribute("display");
                        }

                        if (xReader.Name == "Message")
                        {
                            sError = xReader.GetAttribute("ErrorId");
                        }

                        if (xReader.Name == "Port")
                        {
                            sPort = xReader.GetAttribute("display");
                        }

                        break;

                    case XmlNodeType.Text:
                        sValor = xReader.Value;
                        DatosAccion datosAccion = new DatosAccion();
                        if (!String.IsNullOrEmpty(sError) && sDescripcion == "Message")
                        {
                            datosAccion.Descripcion = String.Empty;     //$"{sError} :";
                        }
                        else if (String.IsNullOrEmpty(sPort))
                        {
                            datosAccion.Descripcion = $"{sDescripcion}:";
                        }
                        else
                        {
                            datosAccion.Descripcion = $" {sPort} {sDescripcion}:";
                        }
                        datosAccion.Valor = sValor;
                        if (!string.IsNullOrEmpty(sSubAccion))
                        {
                            SubListaDatos.Add(datosAccion);
                        }
                        else
                        {
                            ListaDatos.Add(datosAccion);
                        }
                        // sResultado = String.Concat(sResultado, $" : {xReader.Value}");
                        //listBox1.Items.Add(xReader.Value);
                        break;

                    case XmlNodeType.EndElement:

                        if (xReader.Name == "Action")       // si acaba la accion
                        {
                            if (xReader.Depth == 2 && !String.IsNullOrEmpty(sAccion))
                            {
                                ItemsLog Item = new ItemsLog
                                {
                                    Accion = sAccion,
                                    Icon   = sIcon
                                };
                                Item.HayLista = true;

                                if (SubItemLogs.Count > 0)
                                {
                                    ItemsLog Item1 = new ItemsLog
                                    {
                                        Accion = sAccion,
                                        Icon   = sIcon
                                    };
                                    Item1.ListaDatos = ListaDatos;
                                    Item.SubItemsLog = new List <ItemsLog>();
                                    Item.SubItemsLog.Add(Item1);
                                    Item.SubItemsLog.AddRange(SubItemLogs);
                                    Item.HayLista = false;
                                    // Item.ListaDatos = null;
                                }
                                else
                                {
                                    Item.ListaDatos = ListaDatos;
                                }

                                ItemsLog.Add(Item);
                                sAccion = String.Empty;
                            }
                            else if (xReader.Depth == 3)
                            {
                                //if (!String.IsNullOrEmpty(sAccion))
                                //{
                                //    ItemsLog Item1 = new ItemsLog
                                //    {
                                //        Accion = sAccion,
                                //        Icon = sIcon
                                //    };

                                //    Item1.ListaDatos = ListaDatos;
                                //    ItemsLog.Add(Item1);
                                //    sAccion = String.Empty;
                                //}
                                ItemsLog Item = new ItemsLog
                                {
                                    Accion = sSubAccion,
                                    Icon   = sSubIcon
                                };

                                Item.ListaDatos = SubListaDatos;
                                SubItemLogs.Add(Item);
                                sSubAccion = String.Empty;
                            }
                        }
                        if (xReader.Name == "AppError")      // si acaba la accion
                        {
                            ItemsLog Item = new ItemsLog
                            {
                                Accion = $"Error {sError}",
                                Icon   = sIcon
                            };
                            Item.HayLista   = true;
                            Item.ListaDatos = ListaDatos;
                            ItemsLog.Add(Item);
                        }
                        if (xReader.Name == "Port")
                        {
                            sPort = String.Empty;
                        }
                        if (xReader.Name == "AppError")
                        {
                            sIcon  = String.Empty;
                            sError = String.Empty;
                        }
                        if (xReader.Name == "Mtus" || xReader.Name == "Error")
                        {
                            bTratar = false;
                        }
                        //sResultado = String.Concat(sResultado, Environment.NewLine);
                        //listBox1.Items.Add("");
                        break;
                    }
                }
            }
            //  Application.Current.MainPage.DisplayAlert("XML", sResultado,"OK");
        }