Exemplo n.º 1
0
        static void Main(string[] args)
        {
            Human man = new Human("Vasya", 25);
            Human man1 = new Human("Петя", 25);

            //создаём объект класса XmlSerializer
            XmlSerializer serial = new XmlSerializer(typeof(Human));
            //создаём поток для записи в файл "chel1.xml"
            using (Stream fStr = new FileStream("chel1.xml", FileMode.Create, FileAccess.Write)) //Create - создаём, Write - записываем
            {
                //сериализуется объект - записывается в поток в формате xml, потому что стр.24
                serial.Serialize(fStr, man);
            }
            Console.WriteLine("Serialization is end");

            //десериализация - читаем из потока
            using (Stream fStr = new FileStream("chel1.xml", FileMode.Open, FileAccess.Read))   //Open - открываем, Read - читаем
            {
                Human vasya = (Human)serial.Deserialize(fStr); //создаём Human и записывем в него из потока
                Console.WriteLine(vasya.Name + " " + vasya.Age);
            }

            //сериализация коллекции
            List<Human> men = new List<Human>();
            men.Add(man);
            men.Add(man1);
            XmlSerializer serial1 = new XmlSerializer(typeof(List<Human>));
            using (Stream fStr1 = new FileStream("chel2.xml", FileMode.Create, FileAccess.Write)) //Create - создаём, Write - записываем
            {
                serial1.Serialize(fStr1, men);
            }

            //десериализация коллекции - читаем из потока
            using (Stream fStr1 = new FileStream("chel2.xml", FileMode.Open, FileAccess.Read))   //Open - открываем, Read - читаем
            {
                List<Human> menRead = (List<Human>)serial1.Deserialize(fStr1); //создаём Human и записывем в него из потока
                foreach ( Human item in menRead)
                {
                    Console.WriteLine(item.Name+" "+item.Age);
                }
            }

            Console.ReadKey();
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            //Human man = new Human("Vasya", 25);
            //Human man1 = new Human("Петя", 25);

            ////создаём объект класса XmlSerializer
            //XmlSerializer serial = new XmlSerializer(typeof(Human));
            ////создаём поток для записи в файл "chel1.xml"
            //using (Stream fStr = new FileStream("chel1.xml", FileMode.Create, FileAccess.Write)) //Create - создаём, Write - записываем
            //{
            //    //сериализуется объект - записывается в поток в формате xml, потому что стр.24
            //    serial.Serialize(fStr, man);
            //}
            //Console.WriteLine("Serialization is end");

            ////десериализация - читаем из потока
            //using (Stream fStr = new FileStream("chel1.xml", FileMode.Open, FileAccess.Read))   //Open - открываем, Read - читаем
            //{
            //    Human vasya = (Human)serial.Deserialize(fStr); //создаём Human и записывем в него из потока
            //    Console.WriteLine(vasya.Name + " " + vasya.Age);
            //}

            ////сериализация коллекции
            //List<Human> men = new List<Human>();
            //men.Add(man);
            //men.Add(man1);
            //XmlSerializer serial1 = new XmlSerializer(typeof(List<Human>));
            //using (Stream fStr1 = new FileStream("chel2.xml", FileMode.Create, FileAccess.Write)) //Create - создаём, Write - записываем
            //{
            //    serial1.Serialize(fStr1, men);
            //}

            ////десериализация коллекции - читаем из потока
            //using (Stream fStr1 = new FileStream("chel2.xml", FileMode.Open, FileAccess.Read))   //Open - открываем, Read - читаем
            //{
            //    List<Human> menRead = (List<Human>)serial1.Deserialize(fStr1); //создаём Human и записывем в него из потока
            //    foreach ( Human item in menRead)
            //    {
            //        Console.WriteLine(item.Name+" "+item.Age);
            //    }
            //}

            //*********************************************************************************
            //чтение xml-документа с помощью XmlDocument
            XmlDocument doc = new XmlDocument();
            //загрузили документ из файла
            doc.Load("chel2.xml");
            //получаем список всех узлов с именем Human
            XmlNodeList list = doc.GetElementsByTagName("Human");
            //вывод
            foreach (XmlNode item in list)
            {
                Console.WriteLine(item["Name"].InnerText + " " + item["Age"].InnerText);
            }

            //добавление информации - нового узла
            XmlNode newMan = doc.CreateElement("Human"); //создаём узел
            XmlNode elemName = doc.CreateElement("Name");
            XmlNode textName = doc.CreateTextNode("Миша");  //добавляем информацию
            XmlNode elemAge = doc.CreateElement("Age"); //
            XmlNode textAge = doc.CreateTextNode("21");
            XmlNode elemOt = doc.CreateElement("ot");
            XmlNode textOt = doc.CreateTextNode("Ivanovich");

            //собираем узел
            elemName.AppendChild(textName); //добавляем текст в элемент
            elemAge.AppendChild(textAge);   //--//--
            elemOt.AppendChild(textOt);     //добавляем текст в отчество
            elemName.AppendChild(elemOt);   //добавляем отчество в имя

            newMan.AppendChild(elemName); //добавляем элемент в узел (имя и отчество)
            newMan.AppendChild(elemAge);  //--//--
            //добавляем в корень
            doc.DocumentElement.AppendChild(newMan);

            //сохраняем в новый файл
            doc.Save("chel3.xml");

            //*********************************************************************************
            //создание нового документа
            XmlDocument doc1 = new XmlDocument();
            XmlNode xmlDec1 = doc1.CreateXmlDeclaration("1.0", "", "");     //1-версия, 2-кодировка по умолчанию не будет добавляться, 3-атрибут не будет добавляться
            doc1.AppendChild(xmlDec1);      //в декларацию добавим документ
            //создание корневого элемента
            XmlNode root = doc1.CreateElement("ArrayOfHuman");
            doc1.AppendChild(root);
            //создание и добавление узла Human
            //первый чел
            XmlNode newMan1 = doc1.CreateElement("Human"); //создаём узел
            XmlNode elemName1 = doc1.CreateElement("Name");
            XmlNode textName1 = doc1.CreateTextNode("Миша");  //добавляем информацию
            XmlNode elemAge1 = doc1.CreateElement("Age"); //
            XmlNode textAge1 = doc1.CreateTextNode("21");
            XmlNode elemOt1 = doc1.CreateElement("ot");
            XmlNode textOt1 = doc1.CreateTextNode("Ivanovich");
            //второй чел
            XmlNode newMan2 = doc1.CreateElement("Human"); //создаём узел
            XmlNode elemName2 = doc1.CreateElement("Name");
            XmlNode elemAge2 = doc1.CreateElement("Age");
            XmlNode elemOt2 = doc1.CreateElement("ot");
            XmlNode textName2 = doc1.CreateTextNode("Sasha");
            XmlNode textAge2 = doc1.CreateTextNode("32");
            XmlNode textOt2 = doc1.CreateTextNode("Petrovich");
            //собираем первый узел
            elemName1.AppendChild(textName1); //добавляем текст в элемент
            elemAge1.AppendChild(textAge1);   //--//--
            elemOt1.AppendChild(textOt1);     //добавляем текст в отчество
            elemName1.AppendChild(elemOt1);   //добавляем отчество в имя

            newMan1.AppendChild(elemName1); //добавляем элемент в узел (имя и отчество)
            newMan1.AppendChild(elemAge1);

            doc1.DocumentElement.AppendChild(newMan1);
            //собираем второй узел
            elemName2.AppendChild(textName2); //добавляем текст в элемент
            elemAge2.AppendChild(textAge2);   //--//--
            elemOt2.AppendChild(textOt2);     //добавляем текст в отчество
            elemName2.AppendChild(elemOt2);   //добавляем отчество в имя

            newMan2.AppendChild(elemName2); //добавляем элемент в узел (имя и отчество)
            newMan2.AppendChild(elemAge2);

            doc1.DocumentElement.AppendChild(newMan2);

            //сохраняем в новый файл
            doc1.Save("chel4.xml");

            //*********************************************************************************
            //чтение xml-файла с помощью XmlTextReader
            List<Human> men=new List<Human>();
            XmlTextReader reader = new XmlTextReader("chel4.xml");
            Human currentMan=null;
            while (reader.Read())
            {
                if (reader.NodeType==XmlNodeType.Element)
                {
                 switch (reader.Name)
                  {
                     case "Human":
                       currentMan = new Human();    //нашли Human и создали currentMan
                       break;
                     case "Name":
                         //дошли до имени и считали
                     //  currentMan.Name = reader.ReadElementContentAsString();
                       //если есть отчество просто считываем что идет за Name
                       reader.Read();
                       currentMan.Name = reader.Value;
                       break;
                     case "Age":
                       //дошли до возраста и считали
                       currentMan.Age = reader.ReadElementContentAsInt();
                         //добавили в men считанного чела
                       men.Add(currentMan);
                       break;
                  }
                }
            }
            reader.Close();

            //вывод результата считывания
            foreach (Human item in men)
            {
                Console.WriteLine(item.Name + " " + item.Age);
            }

            Console.ReadKey();
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            Console.WriteLine(CountPositiv(-2, 5, -7, 3));

            //Human man = new Human("Vasya", 25);
            //Human man1 = new Human("Петя", 25);

            ////создаём объект класса XmlSerializer
            //XmlSerializer serial = new XmlSerializer(typeof(Human));
            ////создаём поток для записи в файл "chel1.xml"
            //using (Stream fStr = new FileStream("chel1.xml", FileMode.Create, FileAccess.Write)) //Create - создаём, Write - записываем
            //{
            //    //сериализуется объект - записывается в поток в формате xml, потому что стр.24
            //    serial.Serialize(fStr, man);
            //}
            //Console.WriteLine("Serialization is end");

            ////десериализация - читаем из потока
            //using (Stream fStr = new FileStream("chel1.xml", FileMode.Open, FileAccess.Read))   //Open - открываем, Read - читаем
            //{
            //    Human vasya = (Human)serial.Deserialize(fStr); //создаём Human и записывем в него из потока
            //    Console.WriteLine(vasya.Name + " " + vasya.Age);
            //}

            ////сериализация коллекции
            //List<Human> men = new List<Human>();
            //men.Add(man);
            //men.Add(man1);
            //XmlSerializer serial1 = new XmlSerializer(typeof(List<Human>));
            //using (Stream fStr1 = new FileStream("chel2.xml", FileMode.Create, FileAccess.Write)) //Create - создаём, Write - записываем
            //{
            //    serial1.Serialize(fStr1, men);
            //}

            ////десериализация коллекции - читаем из потока
            //using (Stream fStr1 = new FileStream("chel2.xml", FileMode.Open, FileAccess.Read))   //Open - открываем, Read - читаем
            //{
            //    List<Human> menRead = (List<Human>)serial1.Deserialize(fStr1); //создаём Human и записывем в него из потока
            //    foreach ( Human item in menRead)
            //    {
            //        Console.WriteLine(item.Name+" "+item.Age);
            //    }
            //}

            //*********************************************************************************
            //чтение xml-документа с помощью XmlDocument
            XmlDocument doc = new XmlDocument();
            //загрузили документ из файла
            doc.Load("chel2.xml");
            //получаем список всех узлов с именем Human
            XmlNodeList list = doc.GetElementsByTagName("Human");
            //вывод
            foreach (XmlNode item in list)
            {
                Console.WriteLine(item["Name"].InnerText + " " + item["Age"].InnerText);
            }

            //добавление информации - нового узла
            XmlNode newMan = doc.CreateElement("Human"); //создаём узел
            XmlNode elemName = doc.CreateElement("Name");
            XmlNode textName = doc.CreateTextNode("Миша");  //добавляем информацию
            XmlNode elemAge = doc.CreateElement("Age"); //
            XmlNode textAge = doc.CreateTextNode("21");
            XmlNode elemOt = doc.CreateElement("ot");
            XmlNode textOt = doc.CreateTextNode("Ivanovich");

            //собираем узел
            elemName.AppendChild(textName); //добавляем текст в элемент
            elemAge.AppendChild(textAge);   //--//--
            elemOt.AppendChild(textOt);     //добавляем текст в отчество
            elemName.AppendChild(elemOt);   //добавляем отчество в имя

            newMan.AppendChild(elemName); //добавляем элемент в узел (имя и отчество)
            newMan.AppendChild(elemAge);  //--//--
            //добавляем в корень
            doc.DocumentElement.AppendChild(newMan);

            //сохраняем в новый файл
            doc.Save("chel3.xml");

            //*********************************************************************************
            //создание нового документа
            XmlDocument doc1 = new XmlDocument();
            XmlNode xmlDec1 = doc1.CreateXmlDeclaration("1.0", "", "");     //1-версия, 2-кодировка по умолчанию не будет добавляться, 3-атрибут не будет добавляться
            doc1.AppendChild(xmlDec1);      //в декларацию добавим документ
            //создание корневого элемента
            XmlNode root = doc1.CreateElement("ArrayOfHuman");
            doc1.AppendChild(root);
            //создание и добавление узла Human
            //первый чел
            XmlNode newMan1 = doc1.CreateElement("Human"); //создаём узел
            XmlNode elemName1 = doc1.CreateElement("Name");
            XmlNode textName1 = doc1.CreateTextNode("Миша");  //добавляем информацию
            XmlNode elemAge1 = doc1.CreateElement("Age"); //
            XmlNode textAge1 = doc1.CreateTextNode("21");
            XmlNode elemOt1 = doc1.CreateElement("ot");
            XmlNode textOt1 = doc1.CreateTextNode("Ivanovich");
            //второй чел
            XmlNode newMan2 = doc1.CreateElement("Human"); //создаём узел
            XmlNode elemName2 = doc1.CreateElement("Name");
            XmlNode elemAge2 = doc1.CreateElement("Age");
            XmlNode elemOt2 = doc1.CreateElement("ot");
            XmlNode textName2 = doc1.CreateTextNode("Sasha");
            XmlNode textAge2 = doc1.CreateTextNode("32");
            XmlNode textOt2 = doc1.CreateTextNode("Petrovich");
            //собираем первый узел
            elemName1.AppendChild(textName1); //добавляем текст в элемент
            elemAge1.AppendChild(textAge1);   //--//--
            elemOt1.AppendChild(textOt1);     //добавляем текст в отчество
            elemName1.AppendChild(elemOt1);   //добавляем отчество в имя

            newMan1.AppendChild(elemName1); //добавляем элемент в узел (имя и отчество)
            newMan1.AppendChild(elemAge1);

            doc1.DocumentElement.AppendChild(newMan1);
            //собираем второй узел
            elemName2.AppendChild(textName2); //добавляем текст в элемент
            elemAge2.AppendChild(textAge2);   //--//--
            elemOt2.AppendChild(textOt2);     //добавляем текст в отчество
            elemName2.AppendChild(elemOt2);   //добавляем отчество в имя

            newMan2.AppendChild(elemName2); //добавляем элемент в узел (имя и отчество)
            newMan2.AppendChild(elemAge2);

            doc1.DocumentElement.AppendChild(newMan2);

            //сохраняем в новый файл
            doc1.Save("chel4.xml");

            //*********************************************************************************
            //чтение xml-файла с помощью XmlTextReader
            List<Human> men=new List<Human>();
            XmlTextReader reader = new XmlTextReader("chel4.xml");
            Human currentMan=null;
            while (reader.Read())
            {
                if (reader.NodeType==XmlNodeType.Element)
                {
                 switch (reader.Name)
                  {
                     case "Human":
                       currentMan = new Human();    //нашли Human и создали currentMan
                       break;
                     case "Name":
                         //дошли до имени и считали
                     //  currentMan.Name = reader.ReadElementContentAsString();
                       //если есть отчество просто считываем что идет за Name
                       reader.Read();
                       currentMan.Name = reader.Value;
                       break;
                     case "Age":
                       //дошли до возраста и считали
                       currentMan.Age = reader.ReadElementContentAsInt();
                         //добавили в men считанного чела
                       men.Add(currentMan);
                       break;
                  }
                }
            }
            reader.Close();

            //вывод результата считывания
            foreach (Human item in men)
            {
                Console.WriteLine(item.Name + " " + item.Age);
            }

            //****************************************************************************
            //проверка файла с книгами на соответствие схеме
            XmlTextReader readerBooks = new XmlTextReader("..//..//Book.xml");
            XmlValidatingReader validater = new XmlValidatingReader(readerBooks);   //создалли объект для проверки соответствие схеме
            validater.Schemas.Add("http://tempuri.org/MyBooksSchema.xsd", "..//..//MyBooksSchema.xsd");     //укажем пространство имен и относительный путь (адрес схемы в папке)
            validater.ValidationType = ValidationType.Schema;//укажем тип проверки
            bool valid = true;
            try
            {
                while (validater.Read())
                {

                }
            }
            catch (Exception e)
            {
                valid = false;
                Console.WriteLine(e.Message);
            }
            //закрываем поток
            validater.Close();
            if (valid)
            {
                Console.WriteLine("All OK");
                //если файл правильный, то считать с него информацию
                XmlDocument docBooks = new XmlDocument();   //дерево узлов
                docBooks.Load("..//..//Book.xml");  //создали документ
                XmlNodeList listBook = docBooks.GetElementsByTagName("book");   //получаем коллекцию узлов с именем book
                foreach (XmlNode item in listBook)
                {
                    Console.WriteLine(item["author"].InnerText + "\t" + item["title"].InnerText + "\t " + item["data"].InnerText + "\t" + item["page"].InnerText);
                }
            }
            else
                Console.WriteLine("File error...");

            //****************************************************************************
            Console.WriteLine("\tпроверка файла с книгами на соответствие схеме с помощью XmlSchemaSet\n");
            //проверка файла с книгами на соответствие схеме с помощью XmlSchemaSet
            XmlSchemaSet schema = new XmlSchemaSet();
            schema.Add("http://tempuri.org/MyBooksSchema.xsd", "..//..//MyBooksSchema.xsd");    //добавляем схему в коллекцию
            XmlReaderSettings settings = new XmlReaderSettings();   //создали обеъкт для того, чтобы создать настройки
            settings.ValidationType = ValidationType.Schema;
            settings.Schemas = schema;
            settings.ValidationEventHandler += ValidationCallBack;

            XmlReader readerBook = XmlReader.Create("..//..//Book.xml", settings);

            while (readerBook.Read()) ;
            readerBook.Close();

            if(IsValidFile)  //если файл правильный - читаем и выводим
               {
               XmlTextReader read = new XmlTextReader("..//..//Book.xml");
               while (read.Read())
               {
                   if(read.NodeType==XmlNodeType.Element)
                       switch(read.Name)
                       {
                           case "book":
                               Console.WriteLine(read.GetAttribute(0));
                               break;
                           case "author":
                               Console.Write(read.ReadElementContentAsString() + "\t");
                               break;
                           case "title":
                               Console.Write(read.ReadElementContentAsString() + "\t");
                               break;
                           case "data":
                               Console.Write(read.ReadElementContentAsString() + "\t");
                               break;
                           case "page":
                               Console.WriteLine(read.ReadElementContentAsInt());
                               break;
                       }
               }
               read.Close();
               }
            Console.WriteLine("..."+IsValidFile);

            Console.ReadKey();
        }