final String gpxHeader = getGpxHeaderString(inGpxCachers);
final boolean isVersion1_1 = (gpxHeader.toUpperCase().indexOf("GPX/1/1") > 0);
inWriter.write(gpxHeader);
- // Name field
- String trackName = (inName != null && !inName.equals("")) ? inName : "GpsPruneTrack";
- writeNameAndDescription(inWriter, inName, inDesc, isVersion1_1);
+ // name and description
+ String trackName = (inName != null && !inName.equals("")) ? XmlUtils.fixCdata(inName) : "GpsPruneTrack";
+ String desc = (inDesc != null && !inDesc.equals("")) ? XmlUtils.fixCdata(inDesc) : "Export from GpsPrune";
+ writeNameAndDescription(inWriter, trackName, desc, isVersion1_1);
- int i = 0;
DataPoint point = null;
final boolean exportTrackpoints = inSaveFlags[0];
final boolean exportWaypoints = inSaveFlags[1];
// Loop over waypoints
final int numPoints = inInfo.getTrack().getNumPoints();
int numSaved = 0;
- for (i=0; i<numPoints; i++)
+ for (int i=0; i<numPoints; i++)
{
point = inInfo.getTrack().getPoint(i);
if (!exportSelection || (i>=selStart && i<=selEnd))
private static void writeNameAndDescription(OutputStreamWriter inWriter,
String inName, String inDesc, boolean inIsVersion1_1) throws IOException
{
- String desc = (inDesc != null && !inDesc.equals("")) ? inDesc : "Export from GpsPrune";
// Position of name and description fields needs to be different for GPX1.0 and GPX1.1
if (inIsVersion1_1)
{
}
if (inIsVersion1_1) {inWriter.write('\t');}
inWriter.write("\t<desc>");
- inWriter.write(desc);
+ inWriter.write(inDesc);
inWriter.write("</desc>\n");
if (inIsVersion1_1)
{
source = replaceGpxTags(source, "<time>", "</time>", inPoint.getTimestamp().getText(Timestamp.Format.ISO8601));
if (inPoint.isWaypoint())
{
- source = replaceGpxTags(source, "<name>", "</name>", inPoint.getWaypointName());
- source = replaceGpxTags(source, "<description>", "</description>",
+ source = replaceGpxTags(source, "<name>", "</name>", XmlUtils.fixCdata(inPoint.getWaypointName()));
+ if (source != null)
+ {
+ source = source.replaceAll("<description>", "<desc>").replaceAll("</description>", "</desc>");
+ }
+ source = replaceGpxTags(source, "<desc>", "</desc>",
XmlUtils.fixCdata(inPoint.getFieldValue(Field.DESCRIPTION)));
}
// photo / audio links
}
// write waypoint name after elevation and time
inWriter.write("\t\t<name>");
- inWriter.write(inPoint.getWaypointName().trim());
+ inWriter.write(XmlUtils.fixCdata(inPoint.getWaypointName().trim()));
inWriter.write("</name>\n");
// description, if any
String desc = XmlUtils.fixCdata(inPoint.getFieldValue(Field.DESCRIPTION));
if (desc != null && !desc.equals(""))
{
- inWriter.write("\t\t<description>");
+ inWriter.write("\t\t<desc>");
inWriter.write(desc);
- inWriter.write("</description>\n");
+ inWriter.write("</desc>\n");
}
// Media links, if any
if (inPhoto && inPoint.getPhoto() != null)