private static void writeExtensions(XmlSerializer serializer, GPXExtensions p) throws IOException { if (!p.getExtensionsToRead().isEmpty()) { serializer.startTag(null, "extensions"); for (Map.Entry<String, String> s : p.getExtensionsToRead().entrySet()) { writeNotNullText(serializer, s.getKey(), s.getValue()); } serializer.endTag(null, "extensions"); } }
public static GPXFile loadGPXFile(Context ctx, InputStream f, boolean convertCloudmadeSource) { GPXFile res = new GPXFile(); SimpleDateFormat format = new SimpleDateFormat(GPX_TIME_FORMAT); format.setTimeZone(TimeZone.getTimeZone("UTC")); try { XmlPullParser parser = Xml.newPullParser(); parser.setInput(new InputStreamReader(f)); // $NON-NLS-1$ Stack<GPXExtensions> parserState = new Stack<GPXExtensions>(); parserState.push(res); int tok; while ((tok = parser.next()) != XmlPullParser.END_DOCUMENT) { if (tok == XmlPullParser.START_TAG) { GPXExtensions element = parserState.peek(); element.parse(parser, parserState, format); } else if (tok == XmlPullParser.END_TAG) { GPXExtensions parse = parserState.peek(); String tag = parser.getName(); if (!parse.parseEnd(tag, parserState)) { log.debug("Bad ending tag: " + tag + " for element " + parse.getClass()); } } } if (convertCloudmadeSource && res.isCloudmadeRouteFile()) { Track tk = new Track(); res.tracks.add(tk); TrkSegment segment = new TrkSegment(); tk.segments.add(segment); for (WptPt wp : res.points) { segment.points.add(wp); } res.points.clear(); } } catch (XmlPullParserException e) { log.error("Error reading gpx", e); // $NON-NLS-1$ res.warning = ctx.getString(R.string.error_reading_gpx); } catch (IOException e) { log.error("Error reading gpx", e); // $NON-NLS-1$ res.warning = ctx.getString(R.string.error_reading_gpx); } return res; }
@Override public void parse( XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format) throws XmlPullParserException, IOException { super.parse(parser, parserState, format); if (parser.getName().equals("trkpt")) { WptPt wptPt = parseWptAttributes(parser); points.add(wptPt); parserState.push(wptPt); } }
@Override public void parse( XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format) throws XmlPullParserException, IOException { super.parse(parser, parserState, format); String tag = parser.getName(); if (tag.equals("name")) { name = readText(parser, "name"); } else if (tag.equals("desc")) { desc = readText(parser, "desc"); } else if (tag.equals("rtept")) { WptPt wptPt = parseWptAttributes(parser); points.add(wptPt); parserState.push(wptPt); } }
@Override public void parse( XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format) throws XmlPullParserException, IOException { super.parse(parser, parserState, format); String tag = parser.getName(); if (tag.equals("name")) { name = readText(parser, "name"); } else if (tag.equals("desc")) { desc = readText(parser, "desc"); } else if (tag.equals("trkseg")) { TrkSegment trkSeg = new TrkSegment(); segments.add(trkSeg); parserState.push(trkSeg); } }
@Override public void parse( XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format) throws XmlPullParserException, IOException { super.parse(parser, parserState, format); String tag = parser.getName(); if (tag.equals("name")) { name = readText(parser, "name"); } else if (tag.equals("category")) { category = readText(parser, "category"); } else if (tag.equals("desc")) { desc = readText(parser, "desc"); } else if (tag.equals("ele")) { String text = readText(parser, "ele"); if (text != null) { try { ele = Float.parseFloat(text); } catch (NumberFormatException e) { } } } else if (tag.equals("hdop")) { String text = readText(parser, "hdop"); if (text != null) { try { hdop = Float.parseFloat(text); } catch (NumberFormatException e) { } } } else if (tag.equals("time")) { String text = readText(parser, "time"); if (text != null) { try { time = format.parse(text).getTime(); } catch (ParseException e) { } } } else if (tag.equals("speed") && extensionReadMode) { try { speed = Float.parseFloat(getExtensionsToWrite().get(tag)); } catch (NumberFormatException e) { } } }
@Override public void parse( XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format) throws XmlPullParserException, IOException { super.parse(parser, parserState, format); String tag = parser.getName(); if (tag.equals("gpx")) { this.author = parser.getAttributeValue("", "creator"); } else if (tag.equals("trk")) { Track track = new Track(); tracks.add(track); parserState.push(track); } else if (tag.equals("rte")) { Route route = new Route(); routes.add(route); parserState.push(route); } else if (tag.equals("wpt")) { WptPt wptPt = parseWptAttributes(parser); points.add(wptPt); parserState.push(wptPt); } }