3 import java.text.ParseException;
4 import org.xml.sax.Attributes;
5 import org.xml.sax.helpers.DefaultHandler;
14 * <trkpt lat="35.32123832" lon="139.56965631">
15 * <ele>47.20000076293945</ele>
16 * <time>2012-06-15T03:00:29Z</time>
25 public class GpxParser extends DefaultHandler {
31 public ElementMapTRKPT trkpt;
32 public ElementMapTRKSEG trkseg = new ElementMapTRKSEG();
36 public GpxParser(AppParameters params) {
39 trkpt = new ElementMapTRKPT(params);
45 public void startDocument() {
46 outSb = new StringBuffer();
52 public void endDocument() {
55 public void startElement(String uri,String localName, String qName, Attributes atts) {
56 if(qName.equals("trkseg")){
59 if (trkpt.size() > 0) {
61 trkseg.put((ElementMapTRKPT) trkpt.clone());
65 if(qName.equals("trkpt")){
69 if (tag.getTime() != null) {
70 trkpt.put(tag.clone());
78 for (int i = 0; i < atts.getLength(); i++) {
79 String aname = atts.getQName(i);
80 if (aname.equals("lat")) {
81 lat = Double.valueOf(atts.getValue(i));
83 if (aname.equals("lon")) {
84 lon = Double.valueOf(atts.getValue(i));
88 if ((lat != null) && (lon != null)) {
89 tag = new TagTrkpt(lat, lon);
92 if(qName.equals("ele")){
93 outSb = new StringBuffer();
95 if(qName.equals("time")){
96 outSb = new StringBuffer();
98 if(qName.equals("magvar")){
99 outSb = new StringBuffer();
101 if(qName.equals("speed")){
102 outSb = new StringBuffer();
107 * 要素の終了タグ読み込み時に毎回呼ばれる
109 public void endElement(String uri,String localName,String qName) {
110 if(qName.equals("trkseg")){
111 if (trkpt.size() > 0) {
112 trkseg.put((ElementMapTRKPT) trkpt.clone());
116 if(qName.equals("trkpt")){
119 if (tag.getTime() != null) {
125 if(qName.equals("ele")){
126 tag.setEle(outSb.toString());
128 if(qName.equals("time")){
130 tag.setTime(ImportPicture.toUTCDate(outSb.toString()));
131 } catch (ParseException e) {}
133 if(qName.equals("magvar")){
134 tag.setMagvar(outSb.toString());
136 if(qName.equals("speed")){
137 tag.setSpeed(outSb.toString());
139 outSb = new StringBuffer();
143 * テキストデータ読み込み時に毎回呼ばれる
145 public void characters(char[] ch, int offset, int length) {
147 outSb.append(new String(ch, offset, length));