/// <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>"); } }
/// <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); }