public IGeometry Read(XmlReader reader)
{
if (reader.NodeType == XmlNodeType.EndElement)
throw new ArgumentException("EndElement node type cannot be read by GMLReader.");
if (IsStartElement(reader, "Point"))
return ReadPoint(reader);
if (IsStartElement(reader, "LineString"))
return ReadLineString(reader);
if (IsStartElement(reader, "Polygon"))
return ReadPolygon(reader);
if (IsStartElement(reader, "MultiPoint"))
return ReadMultiPoint(reader);
if (IsStartElement(reader, "MultiLineString"))
return ReadMultiLineString(reader);
if (IsStartElement(reader, "MultiPolygon"))
return ReadMultiPolygon(reader);
if (IsStartElement(reader, "MultiGeometry"))
return ReadGeometryCollection(reader);
// Go away until something readable is found...
reader.Read();
return Read(reader);
}