package osm.jp.gpx; import java.io.File; import java.io.IOException; import java.text.ParseException; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; @SuppressWarnings("serial") public class GpxFile extends File { GpxParser gpx; AppParameters params; public GpxFile(AppParameters params, File file) throws ParserConfigurationException, SAXException, IOException, ParseException { super(file.getParentFile(), file.getName()); this.params = params; this.gpx = new GpxParser(params); } public ElementMapTRKSEG parse() throws ParserConfigurationException, SAXException, IOException { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(false); SAXParser parser; parser = factory.newSAXParser(); try { parser.parse(this, gpx); } catch (SAXParseException e) {} // XMLが閉じられなかったデータを救出する if (gpx.tag != null) { if (gpx.tag.getTime() != null) { gpx.trkpt.put(gpx.tag.clone()); } gpx.tag = null; } if (gpx.trkpt.size() > 0) { gpx.trkseg.put((ElementMapTRKPT)gpx.trkpt.clone()); gpx.trkpt.clear(); } // 表示 gpx.trkseg.printinfo(); return gpx.trkseg; } }