public void SetModelFromXML(string address)
        {
            EJPShape xmlShape    = new EJPShape();
            string   elementName = "";

            XmlTextReader reader = new XmlTextReader(address);

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                case XmlNodeType.Element:     // New node.
                    elementName = reader.Name;
                    break;

                case XmlNodeType.Text:     // New text element.
                    xmlShape.SetPropertyFromXML(elementName, reader.Value);
                    break;

                case XmlNodeType.EndElement:     // End of node.
                    if (reader.Name == "shape")  // If node was a shape, add it to the list.
                    {
                        Add(xmlShape);
                        xmlShape = new EJPShape();
                    }
                    break;
                }
            }
        }
        public string ProcessShapes()
        {
            EJPShapeModel model = new EJPShapeModel();

            model.SetModelFromXML("http://www.epogue.info/CPSC-24500/Week07/InternetShapeDraw.xml");

            EJPColorModel colorModel = new EJPColorModel();

            colorModel.setModelFromXML("http://www.epogue.info/CPSC-24500/Week08/ShapeDrawColors.xml");

            string returnString = "<?xml version=\"1.0\"?>\n";

            returnString += "<shapeslist>\n";

            foreach (Object obj in model)
            {
                EJPShape shape = (EJPShape)obj;
                returnString += shape.toXML(colorModel.getColorForShape(shape.type));
            }

            returnString += "</shapeslist>\n";

            return(returnString);
        }