docs: def import_locations(self, gpx_file):
          """Import GPX data files.
  
          ``import_locations()`` returns a list with :class:`~gpx.Waypoint`
          objects.
  
          It expects data files in GPX format, as specified in `GPX 1.1 Schema
          Documentation`_, which is XML such as::
  
              <?xml version="1.0" encoding="utf-8" standalone="no"?>
              <gpx version="1.1" creator="PocketGPSWorld.com"
              xmlns="http://www.topografix.com/GPX/1/1"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
  
                <wpt lat="52.015" lon="-0.221">
                  <name>Home</name>
                  <desc>My place</desc>
                </wpt>
                <wpt lat="52.167" lon="0.390">
                  <name>MSR</name>
                  <desc>Microsoft Research, Cambridge</desc>
                </wpt>
              </gpx>
  
          The reader uses the :mod:`ElementTree` module, so should be very fast
          when importing data.  The above file processed by
          ``import_locations()`` will return the following ``list`` object::
  
              [Waypoint(52.015, -0.221, "Home", "My place"),
               Waypoint(52.167, 0.390, "MSR", "Microsoft Research, Cambridge")]
  
          Args:
              gpx_file (iter): GPX data to read
  
          Returns:
              list: Locations with optional comments
  
          .. _GPX 1.1 Schema Documentation: http://www.topografix.com/GPX/1/1/
          """
          self._gpx_file = gpx_file
          data = utils.prepare_xml_read(gpx_file, objectify=True)
  
          try:
              self.metadata.import_metadata(data.metadata)
          except AttributeError:
              pass
  
          for waypoint in data.wpt:
              latitude = waypoint.get('lat')
              longitude = waypoint.get('lon')
              try:
                  name = waypoint.name.text
              except AttributeError:
                  name = None
              try:
                  description = waypoint.desc.text
              except AttributeError:
                  description = None
              try:
                  elevation = float(waypoint.ele.text)
              except AttributeError:
                  elevation = None
              try:
                  time = utils.Timestamp.parse_isoformat(waypoint.time.text)
              except AttributeError:
                  time = None
              self.append(Waypoint(latitude, longitude, name, description,
                                   elevation, time))