public void ReadXml(XmlReader r)
            {
                while (r.MoveToNextAttribute())
                {
                    if (r.Name == "appid")
                    {
                        appid = r.Value;
                    }
                    else if (r.Name == "version")
                    {
                        version = r.Value;
                    }
                    else if (r.Name == "nextversion")
                    {
                        nextversion = r.Value;
                    }
                    else if (r.Name == "lang")
                    {
                        lang = r.Value;
                    }
                    else if (r.Name == "brand")
                    {
                        brand = r.Value;
                    }
                    else if (r.Name == "client")
                    {
                        client = r.Value;
                    }
                    else if (r.Name == "installage")
                    {
                        installage = Int32.Parse(r.Value);
                    }
                }

                while (r.Read())
                {
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        if (r.Name == "updatecheck")
                        {
                            updatecheck = new UpdateCheck();
                            XmlReader s = r.ReadSubtree();
                            s.Read();
                            updatecheck.ReadXml(s);
                            s.Close();
                        }
                        else if (r.Name == "ping")
                        {
                            ping = new PingRequest();
                            XmlReader s = r.ReadSubtree();
                            s.Read();
                            ping.ReadXml(s);
                            s.Close();
                        }
                        else if (r.Name == "event")
                        {
                            if (events == null)
                            {
                                events = new List <EventReport>();
                            }
                            EventReport e_rpt = new EventReport();
                            XmlReader   s     = r.ReadSubtree();
                            s.Read();
                            e_rpt.ReadXml(s);
                            s.Close();
                            events.Add(e_rpt);
                        }
                        else if (r.Name == "data")
                        {
                            if (data == null)
                            {
                                data = new List <DataRequest>();
                            }
                            DataRequest d_rpt = new DataRequest();
                            XmlReader   s     = r.ReadSubtree();
                            s.Read();
                            d_rpt.ReadXml(s);
                            s.Close();
                            data.Add(d_rpt);
                        }
                    }
                }
            }