Beispiel #1
0
        /// <summary>
        /// Writes data from the box into a file by XmlTextWriter
        /// </summary>
        /// <param name="box"></param>
        /// <param name="path"></param>
        public void WriteFiguresByXmlTextWriter(Box box, string path)
        {
            using (XmlTextWriter writer = new XmlTextWriter(path, System.Text.Encoding.UTF8))
            {
                writer.Formatting = Formatting.Indented;
                writer.WriteStartDocument();
                writer.WriteStartElement("Figures");

                FiguresTypes type;

                XMLTextReaderDataParser parser = new XMLTextReaderDataParser();

                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.WriteEndElement();
                writer.WriteEndDocument();
                writer.Flush();
            }
        }
Beispiel #2
0
        /// <summary>
        /// Reads Xml file by XmlTextReader
        /// </summary>
        /// <param name="path"></param>
        /// <returns>new Box</returns>
        public Box ReadXmlByXmlTextReader(string path)
        {
            using (XmlTextReader reader = new XmlTextReader(path))
            {
                reader.MoveToContent();
                int                     i       = 0;
                Box                     box     = new Box();
                bool                    hasMore = reader.Read();
                FiguresTypes            type;
                XMLTextReaderDataParser parser = new XMLTextReaderDataParser();
                while (hasMore)
                {
                    if (reader.NodeType == XmlNodeType.Element && Enum.TryParse(reader.Name, 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;
                        }
                    }
                    else
                    {
                        hasMore = reader.Read();
                    }
                }

                return(box);
            }
        }