Пример #1
0
        /// <summary>
        /// Writes data from the box into a file by a StreamWriter
        /// </summary>
        /// <param name="box"></param>
        /// <param name="path"></param>
        public void WriteFiguresByStreamWriter(Box box, string path)
        {
            using (StreamWriter writer = new StreamWriter(path))
            {
                writer.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
                writer.WriteLine("<Figures>");

                StreamReaderDataParser parser = new StreamReaderDataParser();

                FiguresTypes type;

                for (int i = 0; i < box.Size; i++)
                {
                    if (box[i] == null)
                    {
                        continue;
                    }
                    else
                    {
                        if (Enum.TryParse(box[i].GetType().Name.ToString(), out type))
                        {
                            switch (type)
                            {
                            case FiguresTypes.PaperCircle:
                                parser.ParsePaperCircleAsXmlNode(writer, (PaperCircle)box[i]);
                                break;

                            case FiguresTypes.PaperRectangle:
                                parser.ParsePaperRectangleAsXmlNode(writer, (PaperRectangle)box[i]);
                                break;

                            case FiguresTypes.PaperTriangle:
                                parser.ParsePaperTriangleAsXmlNode(writer, (PaperTriangle)box[i]);
                                break;

                            case FiguresTypes.FilmCircle:
                                parser.ParseFilmCircleAsXmlNode(writer, (FilmCircle)box[i]);
                                break;

                            case FiguresTypes.FilmRectangle:
                                parser.ParseFilmRectangleAsXmlNode(writer, (FilmRectangle)box[i]);
                                break;

                            case FiguresTypes.FilmTriangle:
                                parser.ParseFilmTriangleAsXmlNode(writer, (FilmTriangle)box[i]);
                                break;
                            }
                        }
                    }
                }

                writer.WriteLine("</Figures>");
            }
        }
Пример #2
0
        /// <summary>
        /// Reads Xml file by StreamReader
        /// </summary>
        /// <param name="path"></param>
        /// <returns>new Box</returns>
        public Box ReadXmlByStreamReader(string path)
        {
            string       line;
            int          i = 0;
            FiguresTypes type;
            Box          box = new Box();

            using (StreamReader reader = new StreamReader(path))
            {
                StreamReaderDataParser parser = new  StreamReaderDataParser();
                while ((line = reader.ReadLine()) != null)
                {
                    string   header = line.Trim('<', '>', '\t', ' ');
                    string[] info   = line.Split();

                    if (Enum.TryParse(header, out type))
                    {
                        switch (type)
                        {
                        case FiguresTypes.PaperCircle:
                            box[i] = parser.ParseAsPaperCircle(reader);
                            i++;
                            break;

                        case FiguresTypes.PaperRectangle:
                            box[i] = parser.ParseAsPaperRectangle(reader);
                            i++;
                            break;

                        case FiguresTypes.PaperTriangle:
                            box[i] = parser.ParseAsPaperTriangle(reader);
                            i++;
                            break;

                        case FiguresTypes.FilmCircle:
                            box[i] = parser.ParseAsFilmCircle(reader);
                            i++;
                            break;

                        case FiguresTypes.FilmRectangle:
                            box[i] = parser.ParseAsFilmRectangle(reader);
                            i++;
                            break;

                        case FiguresTypes.FilmTriangle:
                            box[i] = parser.ParseAsFilmTriangle(reader);
                            i++;
                            break;
                        }
                    }
                }
            }
            return(box);
        }