X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fload%2Fxml%2FGpxHandler.java;fp=src%2Ftim%2Fprune%2Fload%2Fxml%2FGpxHandler.java;h=6f63080ceb98461a89ada946fda0d9f35b4fc6f4;hp=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465 diff --git a/src/tim/prune/load/xml/GpxHandler.java b/src/tim/prune/load/xml/GpxHandler.java new file mode 100644 index 0000000..6f63080 --- /dev/null +++ b/src/tim/prune/load/xml/GpxHandler.java @@ -0,0 +1,233 @@ +package tim.prune.load.xml; + +import java.util.ArrayList; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; + +import tim.prune.data.Field; +import tim.prune.load.TrackNameList; + + +/** + * Class for handling specifics of parsing Gpx files + */ +public class GpxHandler extends XmlHandler +{ + private boolean _insidePoint = false; + private boolean _insideWaypoint = false; + private boolean _startSegment = true; + private boolean _isTrackPoint = false; + private int _trackNum = -1; + private GpxTag _fileTitle = new GpxTag(); + private GpxTag _pointName = new GpxTag(), _trackName = new GpxTag(); + private String _latitude = null, _longitude = null; + private GpxTag _elevation = new GpxTag(), _time = new GpxTag(); + private GpxTag _type = new GpxTag(), _description = new GpxTag(); + private GpxTag _link = new GpxTag(); + private GpxTag _currentTag = null; + private ArrayList _pointList = new ArrayList(); + private ArrayList _linkList = new ArrayList(); + private TrackNameList _trackNameList = new TrackNameList(); + + + /** + * Receive the start of a tag + * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) + */ + public void startElement(String uri, String localName, String qName, + Attributes attributes) throws SAXException + { + // Read the parameters for waypoints and track points + String tag = qName.toLowerCase(); + if (tag.equals("wpt") || tag.equals("trkpt") || tag.equals("rtept")) + { + _insidePoint = true; + _insideWaypoint = tag.equals("wpt"); + _isTrackPoint = tag.equals("trkpt"); + final int numAttributes = attributes.getLength(); + for (int i=0; i