]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/save/GpxExporter.java
Version 18.3, February 2016
[GpsPrune.git] / tim / prune / save / GpxExporter.java
index 584d9ba5e7ab628129d3002077bc4648f4a059ac..936361680495e30a75f528d62e465d32a72260c8 100644 (file)
@@ -347,11 +347,11 @@ public class GpxExporter extends GenericFunction implements Runnable
                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];
@@ -368,7 +368,7 @@ public class GpxExporter extends GenericFunction implements Runnable
                // 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))
@@ -423,7 +423,6 @@ public class GpxExporter extends GenericFunction implements Runnable
        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)
                {
@@ -439,7 +438,7 @@ public class GpxExporter extends GenericFunction implements Runnable
                }
                if (inIsVersion1_1) {inWriter.write('\t');}
                inWriter.write("\t<desc>");
-               inWriter.write(desc);
+               inWriter.write(inDesc);
                inWriter.write("</desc>\n");
                if (inIsVersion1_1)
                {
@@ -538,7 +537,7 @@ public class GpxExporter extends GenericFunction implements Runnable
                source = replaceGpxTags(source, "<time>", "</time>", inPoint.getTimestamp().getText(Timestamp.Format.ISO8601));
                if (inPoint.isWaypoint())
                {
-                       source = replaceGpxTags(source, "<name>", "</name>", inPoint.getWaypointName());
+                       source = replaceGpxTags(source, "<name>", "</name>", XmlUtils.fixCdata(inPoint.getWaypointName()));
                        if (source != null)
                        {
                                source = source.replaceAll("<description>", "<desc>").replaceAll("</description>", "</desc>");
@@ -694,7 +693,7 @@ public class GpxExporter extends GenericFunction implements Runnable
                }
                // 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));