/**
  * Gets be called on opening tags like: <tag> Can provide attribute(s), when xml was like: <tag
  * attribute="attributeValue">
  */
 @Override
 public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
     throws SAXException {
   if (localName.equalsIgnoreCase("kml")) {
     this.in_kmltag = true;
   } else if (localName.equalsIgnoreCase("Placemark")) {
     this.in_placemarktag = true;
     navigationDataSet.setCurrentPlacemark(new Placemark());
   } else if (localName.equalsIgnoreCase("name")) {
     this.in_nametag = true;
   } else if (localName.equalsIgnoreCase("description")) {
     this.in_descriptiontag = true;
   } else if (localName.equalsIgnoreCase("point")) {
     this.in_pointtag = true;
   } else if (localName.equalsIgnoreCase("country")) {
     this.in_conutry = true;
     this.is_conutry = true;
   } else if (localName.equalsIgnoreCase("coordinates")) {
     buffer = new StringBuffer();
     this.in_coordinatestag = true;
   }
 }
  /** Gets be called on the following structure: <tag>characters</tag> */
  @Override
  public void characters(char ch[], int start, int length) {
    if (this.in_nametag) {

      if (navigationDataSet.getCurrentPlacemark() == null)
        navigationDataSet.setCurrentPlacemark(new Placemark());

      navigationDataSet.getCurrentPlacemark().setTitle(new String(ch, start, length));

    } else if (this.in_descriptiontag) {

      if (navigationDataSet.getCurrentPlacemark() == null)
        navigationDataSet.setCurrentPlacemark(new Placemark());

      navigationDataSet.getCurrentPlacemark().setDescription(new String(ch, start, length));
    } else if (this.in_conutry) {

      if (navigationDataSet.getCurrentPlacemark() == null)
        navigationDataSet.setCurrentPlacemark(new Placemark());

      String temp_country = new String(ch, start, length);
      navigationDataSet.getCurrentPlacemark().setCountry(true);
      if (temp_country.compareTo(last_country) != 0) last_country = temp_country;

    } else if (this.in_coordinatestag) {

      if (navigationDataSet.getCurrentPlacemark() == null)
        navigationDataSet.setCurrentPlacemark(new Placemark());

      navigationDataSet.getCurrentPlacemark().setCoordinates(new String(ch, start, length));
      navigationDataSet.getCurrentPlacemark().setCountry(last_country);

      navigationDataSet.addCurrentPlacemark();

      buffer.append(ch, start, length);
    }
  }