code: @Override
      public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
          if (localName.equalsIgnoreCase(GPXTags.RTEPT)) {
              point = true;
              GPXPoint routePoint = new GPXPoint(GpxMetadata.RTEPTFIELDCOUNT);
              try {
                  Coordinate coordinate = GPXCoordinate.createCoordinate(attributes);
                  Point geom = getGeometryFactory().createPoint(coordinate);
                  geom.setSRID(4326);
                  routePoint.setValue(GpxMetadata.THE_GEOM, geom);
                  routePoint.setValue(GpxMetadata.PTLAT, coordinate.y);
                  routePoint.setValue(GpxMetadata.PTLON, coordinate.x);
                  routePoint.setValue(GpxMetadata.PTELE, coordinate.z);
                  routePoint.setValue(GpxMetadata.PTID, idRtPt++);
                  routePoint.setValue(GpxMetadata.RTEPT_RTEID, getCurrentLine().getValues()[GpxMetadata.LINEID]);
                  rteList.add(coordinate);
              } catch (NumberFormatException ex) {
                  throw new SAXException(ex);
              }
              setCurrentPoint(routePoint);
          }
  
          // Clear content buffer
          getContentBuffer().delete(0, getContentBuffer().length());
  
          // Store name of current element in stack
          getElementNames().push(qName);
      }
docs: Fires whenever an XML start markup is encountered. It creates a new
  routePoint when a <rtept> markup is encountered.
  
  @param uri URI of the local element
  @param localName Name of the local element (without prefix)
  @param qName qName of the local element (with prefix)
  @param attributes Attributes of the local element (contained in the
  markup)
  @throws SAXException Any SAX exception, possibly wrapping another
  exception